Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor Function #626

Merged
merged 2 commits into from
Aug 18, 2020
Merged

Refactor Function #626

merged 2 commits into from
Aug 18, 2020

Conversation

HalidOdat
Copy link
Member

@HalidOdat HalidOdat commented Aug 13, 2020

This PR is a preparation for the function design discussed in #445

It changes the following:

  • Moved Function::call() => GcObject::call() this is done because we need the object that is being called to be garbage collected, because we put it in the environment. This was awkward before since we pass a clone of object and the access the Function and call it and pass the function object.
  • Moved Function::construct() => GcObject::construct() same as Function::call()
  • Made Function be an enum since many fields that are for ordinary functions where there for builtins.
  • Removed InternalState since we will replace it with a NativeObject.
  • Put RegExp in box because it was really big (136 bytes)
  • Added Interpreter::create_builtin_function(name, length, function pointer) -> GcObject
  • Added Interpreter::register_global_function(name, length, function pointer)
  • Shrink Function from 56 bytes to 48 bytes
  • Shrink ObjectData from 144 bytes to 80 bytes
  • Shrink Object from 272 bytes to 192 bytes

@HalidOdat HalidOdat added technical debt execution Issues or PRs related to code execution labels Aug 13, 2020
@codecov
Copy link

codecov bot commented Aug 13, 2020

Codecov Report

Merging #626 into master will increase coverage by 0.26%.
The diff coverage is 60.76%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master     #626      +/-   ##
==========================================
+ Coverage   72.64%   72.91%   +0.26%     
==========================================
  Files         179      178       -1     
  Lines       13275    13226      -49     
==========================================
  Hits         9644     9644              
+ Misses       3631     3582      -49     
Impacted Files Coverage Δ
boa/src/builtins/object/mod.rs 39.72% <ø> (+1.60%) ⬆️
boa/src/builtins/value/mod.rs 69.00% <ø> (+3.49%) ⬆️
boa/src/environment/function_environment_record.rs 27.08% <ø> (ø)
boa/src/environment/lexical_environment.rs 75.49% <0.00%> (+0.73%) ⬆️
boa/src/realm.rs 92.85% <ø> (+20.63%) ⬆️
boa/src/exec/mod.rs 71.06% <31.57%> (-3.01%) ⬇️
boa/src/builtins/function/mod.rs 82.22% <54.54%> (+9.16%) ⬆️
boa/src/exec/declaration/mod.rs 78.26% <60.00%> (+4.34%) ⬆️
boa/src/builtins/object/gcobject.rs 72.72% <68.35%> (-12.13%) ⬇️
boa/src/builtins/map/tests.rs 100.00% <100.00%> (ø)
... and 3 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update d025207...185b53a. Read the comment docs.

@github-actions
Copy link

Benchmark for d5a603e

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 373.1±9.81ns 370.2±8.31ns +0.78%
Arithmetic operations (Full) 244.1±4.48µs 231.6±5.17µs +5.40%
Array access (Execution) 8.3±0.25µs 8.1±0.17µs +2.47%
Array access (Full) 267.5±6.35µs 256.3±9.40µs +4.37%
Array creation (Execution) 3.3±0.09ms 3.3±0.07ms 0.00%
Array creation (Full) 3.8±0.06ms 3.7±0.10ms +2.70%
Array pop (Execution) 1235.0±49.38µs 1157.6±34.48µs +6.69%
Array pop (Full) 1586.4±79.99µs 1508.1±57.24µs +5.19%
Boolean Object Access (Execution) 4.1±0.18µs 4.3±0.08µs -4.65%
Boolean Object Access (Full) 248.9±8.09µs 241.2±10.47µs +3.19%
Create Realm 532.0±81.81ns 443.9±8.99ns +19.85%
Dynamic Object Property Access (Execution) 5.0±0.16µs 4.9±0.14µs +2.04%
Dynamic Object Property Access (Full) 257.3±9.05µs 243.9±8.32µs +5.49%
Expression (Lexer) 2.3±0.05µs 2.3±0.06µs 0.00%
Expression (Parser) 5.5±0.21µs 5.1±0.19µs +7.84%
Fibonacci (Execution) 883.8±24.63µs 860.2±18.78µs +2.74%
Fibonacci (Full) 1190.8±83.15µs 1084.0±51.51µs +9.85%
For loop (Execution) 22.8±0.71µs 21.8±0.47µs +4.59%
For loop (Full) 279.1±10.94µs 269.5±6.89µs +3.56%
For loop (Lexer) 5.3±0.20µs 5.1±0.13µs +3.92%
For loop (Parser) 14.0±0.39µs 12.6±0.59µs +11.11%
Goal Symbols (Parser) 8.2±0.18µs 7.8±0.39µs +5.13%
Hello World (Lexer) 823.6±13.33ns 760.3±34.44ns +8.33%
Hello World (Parser) 2.2±0.11µs 2.0±0.07µs +10.00%
Long file (Parser) 6.2±0.14ms 5.9±0.17ms +5.08%
Number Object Access (Execution) 3.4±0.07µs 3.4±0.17µs 0.00%
Number Object Access (Full) 248.4±6.41µs 241.7±8.29µs +2.77%
Object Creation (Execution) 4.4±0.13µs 4.1±0.13µs +7.32%
Object Creation (Full) 297.2±5.92µs 292.4±11.71µs +1.64%
RegExp (Execution) 63.9±2.30µs 63.0±2.68µs +1.43%
RegExp (Full) 400.6±11.61µs 387.8±20.99µs +3.30%
RegExp Literal (Execution) 67.4±4.26µs 67.2±1.79µs +0.30%
RegExp Literal (Full) 318.0±15.04µs 311.9±13.24µs +1.96%
RegExp Literal Creation (Execution) 63.2±2.49µs 65.0±1.80µs -2.77%
RegExp Literal Creation (Full) 407.2±16.54µs 381.9±19.79µs +6.62%
Static Object Property Access (Execution) 4.5±0.20µs 4.4±0.08µs +2.27%
Static Object Property Access (Full) 250.6±7.65µs 239.5±6.93µs +4.63%
String Object Access (Execution) 6.5±0.22µs 6.6±0.17µs -1.52%
String Object Access (Full) 251.6±4.92µs 242.3±11.54µs +3.84%
String comparison (Execution) 5.8±0.26µs 5.8±0.20µs 0.00%
String comparison (Full) 250.3±4.89µs 244.0±9.40µs +2.58%
String concatenation (Execution) 4.7±0.34µs 4.7±0.25µs 0.00%
String concatenation (Full) 244.0±6.52µs 227.3±9.06µs +7.35%
String copy (Execution) 3.4±0.09µs 3.5±0.13µs -2.86%
String copy (Full) 239.3±9.95µs 237.8±10.43µs +0.63%
Symbols (Execution) 2.9±0.11µs 2.7±0.07µs +7.41%
Symbols (Full) 231.2±6.96µs 225.6±6.58µs +2.48%

@github-actions
Copy link

Benchmark for 05430fc

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 383.0±20.34ns 387.7±20.67ns -1.21%
Arithmetic operations (Full) 261.8±13.26µs 257.5±12.38µs +1.67%
Array access (Execution) 9.0±0.42µs 9.1±0.56µs -1.10%
Array access (Full) 285.2±15.96µs 278.5±14.23µs +2.41%
Array creation (Execution) 3.3±0.13ms 3.3±0.16ms 0.00%
Array creation (Full) 3.7±0.16ms 3.8±0.19ms -2.63%
Array pop (Execution) 1149.3±53.13µs 1170.4±74.45µs -1.80%
Array pop (Full) 1648.5±144.92µs 1655.9±101.61µs -0.45%
Boolean Object Access (Execution) 4.7±0.27µs 4.7±0.25µs 0.00%
Boolean Object Access (Full) 273.3±16.44µs 270.0±14.52µs +1.22%
Create Realm 467.5±32.09ns 484.0±31.15ns -3.41%
Dynamic Object Property Access (Execution) 5.6±0.29µs 5.7±0.38µs -1.75%
Dynamic Object Property Access (Full) 280.9±23.84µs 275.4±14.01µs +2.00%
Expression (Lexer) 2.6±0.16µs 2.6±0.16µs 0.00%
Expression (Parser) 5.4±0.23µs 5.5±0.34µs -1.82%
Fibonacci (Execution) 1007.8±65.49µs 1002.0±48.19µs +0.58%
Fibonacci (Full) 1314.3±82.83µs 1298.9±68.42µs +1.19%
For loop (Execution) 24.9±1.61µs 24.8±1.99µs +0.40%
For loop (Full) 302.7±21.61µs 303.3±20.43µs -0.20%
For loop (Lexer) 5.7±0.31µs 5.5±0.30µs +3.64%
For loop (Parser) 15.3±0.98µs 15.0±0.79µs +2.00%
Goal Symbols (Parser) 9.1±0.61µs 8.8±0.37µs +3.41%
Hello World (Lexer) 903.9±54.28ns 902.3±48.49ns +0.18%
Hello World (Parser) 2.3±0.16µs 2.3±0.14µs 0.00%
Long file (Parser) 6.9±0.29ms 6.8±0.25ms +1.47%
Number Object Access (Execution) 3.8±0.29µs 3.8±0.21µs 0.00%
Number Object Access (Full) 276.9±15.70µs 272.6±18.73µs +1.58%
Object Creation (Execution) 4.8±0.27µs 4.9±0.34µs -2.04%
Object Creation (Full) 326.2±15.81µs 323.9±16.45µs +0.71%
RegExp (Execution) 73.6±4.59µs 72.8±4.13µs +1.10%
RegExp (Full) 439.0±20.74µs 446.0±26.95µs -1.57%
RegExp Literal (Execution) 77.2±4.95µs 78.0±5.20µs -1.03%
RegExp Literal (Full) 368.2±30.40µs 357.5±16.62µs +2.99%
RegExp Literal Creation (Execution) 71.9±3.20µs 73.6±4.33µs -2.31%
RegExp Literal Creation (Full) 439.8±24.10µs 429.0±23.69µs +2.52%
Static Object Property Access (Execution) 5.0±0.28µs 5.2±0.35µs -3.85%
Static Object Property Access (Full) 276.2±13.58µs 277.8±15.55µs -0.58%
String Object Access (Execution) 7.3±0.51µs 7.5±0.49µs -2.67%
String Object Access (Full) 280.2±13.02µs 274.7±19.49µs +2.00%
String comparison (Execution) 6.5±0.47µs 6.5±0.49µs 0.00%
String comparison (Full) 278.6±14.80µs 279.9±19.31µs -0.46%
String concatenation (Execution) 5.1±0.33µs 5.3±0.30µs -3.77%
String concatenation (Full) 281.1±17.53µs 272.9±19.66µs +3.00%
String copy (Execution) 4.1±0.25µs 4.0±0.35µs +2.50%
String copy (Full) 267.1±13.04µs 268.2±16.92µs -0.41%
Symbols (Execution) 3.2±0.22µs 3.2±0.16µs 0.00%
Symbols (Full) 252.9±18.60µs 246.9±15.16µs +2.43%

@Razican
Copy link
Member

Razican commented Aug 13, 2020

If I'm not mistaken, this would de facto close #387 and give a nice solution to #363 (comment), right?

@HalidOdat
Copy link
Member Author

If I'm not mistaken, this would de facto close #387 and give a nice solution to #363 (comment), right?

I guess so, forgot there was an PR to fix it. This PR only removes it but there will also be PR to add NativeObject after some discussion. I have a proof of concept locally. I'll create a PR to see and discuss on it.

@jasonwilliams
Copy link
Member

jasonwilliams commented Aug 14, 2020

Looks good so far from what i can see.
Im guessing this and the NativeObject will need to go in together?

@HalidOdat
Copy link
Member Author

HalidOdat commented Aug 14, 2020

Im guessing this and the NativeObject will need to go in together?

No. Not necessarily. They accomplish different goals. This PR does some prepwork for the new function design, and #627 (NativeObject) introduces the native objects

@HalidOdat HalidOdat marked this pull request as ready for review August 14, 2020 14:47
@github-actions
Copy link

Benchmark for ec33490

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 335.5±36.41ns 297.5±24.38ns +12.77%
Arithmetic operations (Full) 218.4±19.58µs 215.2±10.60µs +1.49%
Array access (Execution) 7.0±0.33µs 7.1±0.45µs -1.41%
Array access (Full) 267.3±19.30µs 214.9±11.42µs +24.38%
Array creation (Execution) 2.8±0.25ms 2.8±0.15ms 0.00%
Array creation (Full) 3.4±0.21ms 2.9±0.13ms +17.24%
Array pop (Execution) 935.8±43.21µs 971.7±64.20µs -3.69%
Array pop (Full) 1285.0±97.20µs 1225.0±63.87µs +4.90%
Boolean Object Access (Execution) 3.7±0.32µs 3.6±0.19µs +2.78%
Boolean Object Access (Full) 215.2±10.47µs 214.4±14.38µs +0.37%
Create Realm 355.0±25.44ns 375.8±24.80ns -5.53%
Dynamic Object Property Access (Execution) 4.4±0.30µs 4.7±0.26µs -6.38%
Dynamic Object Property Access (Full) 226.1±13.94µs 227.8±18.10µs -0.75%
Expression (Lexer) 1995.9±140.61ns 1966.9±106.63ns +1.47%
Expression (Parser) 4.5±0.40µs 4.3±0.30µs +4.65%
Fibonacci (Execution) 781.3±32.02µs 812.7±40.53µs -3.86%
Fibonacci (Full) 1216.7±89.71µs 1033.5±65.16µs +17.73%
For loop (Execution) 18.2±1.25µs 20.1±1.70µs -9.45%
For loop (Full) 287.6±18.61µs 231.5±15.78µs +24.23%
For loop (Lexer) 4.5±0.37µs 4.5±0.35µs 0.00%
For loop (Parser) 13.6±0.82µs 12.0±1.00µs +13.33%
Goal Symbols (Parser) 7.3±0.48µs 7.3±0.62µs 0.00%
Hello World (Lexer) 699.2±56.92ns 737.6±62.32ns -5.21%
Hello World (Parser) 1965.9±191.25ns 1742.2±103.55ns +12.84%
Long file (Parser) 6.0±0.40ms 5.4±0.19ms +11.11%
Number Object Access (Execution) 3.0±0.30µs 2.9±0.18µs +3.45%
Number Object Access (Full) 235.8±13.89µs 210.9±11.20µs +11.81%
Object Creation (Execution) 3.8±0.25µs 3.8±0.26µs 0.00%
Object Creation (Full) 271.5±25.50µs 258.3±18.68µs +5.11%
RegExp (Execution) 65.2±3.79µs 58.7±3.48µs +11.07%
RegExp (Full) 349.3±26.48µs 361.0±23.42µs -3.24%
RegExp Literal (Execution) 61.8±4.80µs 64.6±6.80µs -4.33%
RegExp Literal (Full) 286.0±15.63µs 292.8±15.66µs -2.32%
RegExp Literal Creation (Execution) 56.9±3.22µs 59.8±2.92µs -4.85%
RegExp Literal Creation (Full) 351.5±25.64µs 345.1±25.40µs +1.85%
Static Object Property Access (Execution) 4.0±0.26µs 4.0±0.21µs 0.00%
Static Object Property Access (Full) 222.0±12.59µs 221.3±16.95µs +0.32%
String Object Access (Execution) 6.1±0.48µs 5.5±0.38µs +10.91%
String Object Access (Full) 220.1±14.94µs 224.5±14.59µs -1.96%
String comparison (Execution) 5.5±0.40µs 5.0±0.32µs +10.00%
String comparison (Full) 239.6±20.91µs 239.1±15.92µs +0.21%
String concatenation (Execution) 5.1±0.45µs 4.0±0.24µs +27.50%
String concatenation (Full) 224.2±20.02µs 239.9±20.84µs -6.54%
String copy (Execution) 3.6±0.34µs 3.1±0.20µs +16.13%
String copy (Full) 212.0±15.79µs 223.9±11.14µs -5.31%
Symbols (Execution) 2.5±0.11µs 2.5±0.16µs 0.00%
Symbols (Full) 230.1±20.55µs 190.9±8.91µs +20.53%

 - Added call to js object
 - Removed Function::call
 - Removed `Function::construct` and added `GcObject::construct`
 - Made Function an enum
 - Made the Function into an enum
 - Removed `InternalState`
 - Removed `internal_state.rs` file
@github-actions
Copy link

Benchmark for c3b857c

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 315.5±20.62ns 330.1±22.21ns -4.42%
Arithmetic operations (Full) 221.0±16.39µs 231.5±11.30µs -4.54%
Array access (Execution) 8.1±1.16µs 7.7±0.62µs +5.19%
Array access (Full) 252.3±16.79µs 261.7±20.31µs -3.59%
Array creation (Execution) 2.8±0.13ms 2.9±0.13ms -3.45%
Array creation (Full) 3.3±0.16ms 3.4±0.16ms -2.94%
Array pop (Execution) 1015.9±56.80µs 1023.7±59.41µs -0.76%
Array pop (Full) 1383.1±88.70µs 1395.5±87.59µs -0.89%
Boolean Object Access (Execution) 4.1±0.38µs 3.7±0.22µs +10.81%
Boolean Object Access (Full) 241.8±13.53µs 242.4±18.84µs -0.25%
Create Realm 442.7±26.21ns 422.6±24.35ns +4.76%
Dynamic Object Property Access (Execution) 4.9±0.30µs 4.8±0.43µs +2.08%
Dynamic Object Property Access (Full) 248.1±13.37µs 244.1±16.84µs +1.64%
Expression (Lexer) 2.3±0.29µs 2.3±0.17µs 0.00%
Expression (Parser) 4.9±0.32µs 4.7±0.42µs +4.26%
Fibonacci (Execution) 876.2±47.57µs 895.7±59.44µs -2.18%
Fibonacci (Full) 1129.5±68.88µs 1168.4±83.62µs -3.33%
For loop (Execution) 20.5±1.89µs 20.8±1.67µs -1.44%
For loop (Full) 269.9±21.61µs 263.7±22.84µs +2.35%
For loop (Lexer) 4.9±0.31µs 4.8±0.29µs +2.08%
For loop (Parser) 12.7±0.86µs 13.1±0.86µs -3.05%
Goal Symbols (Parser) 7.8±0.59µs 7.9±0.71µs -1.27%
Hello World (Lexer) 775.6±48.52ns 777.9±62.82ns -0.30%
Hello World (Parser) 1931.1±139.74ns 1846.4±122.65ns +4.59%
Long file (Parser) 5.9±0.22ms 6.0±0.24ms -1.67%
Number Object Access (Execution) 3.1±0.20µs 3.1±0.33µs 0.00%
Number Object Access (Full) 234.8±17.25µs 258.2±20.48µs -9.06%
Object Creation (Execution) 4.2±0.29µs 4.0±0.27µs +5.00%
Object Creation (Full) 280.0±18.05µs 279.9±20.43µs +0.04%
RegExp (Execution) 63.3±4.53µs 63.5±3.84µs -0.31%
RegExp (Full) 382.9±26.17µs 372.3±19.78µs +2.85%
RegExp Literal (Execution) 66.6±3.97µs 66.5±6.07µs +0.15%
RegExp Literal (Full) 333.7±16.79µs 307.9±18.97µs +8.38%
RegExp Literal Creation (Execution) 64.0±4.23µs 64.8±4.83µs -1.23%
RegExp Literal Creation (Full) 391.6±27.80µs 381.8±26.53µs +2.57%
Static Object Property Access (Execution) 4.6±0.44µs 4.3±0.27µs +6.98%
Static Object Property Access (Full) 237.2±15.66µs 242.3±15.21µs -2.10%
String Object Access (Execution) 5.9±0.43µs 5.7±0.35µs +3.51%
String Object Access (Full) 245.6±13.53µs 244.7±18.80µs +0.37%
String comparison (Execution) 5.8±0.47µs 5.7±0.37µs +1.75%
String comparison (Full) 241.7±20.44µs 232.8±15.91µs +3.82%
String concatenation (Execution) 4.7±0.26µs 4.5±0.27µs +4.44%
String concatenation (Full) 242.3±16.95µs 239.4±16.72µs +1.21%
String copy (Execution) 3.5±0.24µs 3.6±0.30µs -2.78%
String copy (Full) 231.9±13.85µs 234.5±17.38µs -1.11%
Symbols (Execution) 2.8±0.24µs 2.6±0.17µs +7.69%
Symbols (Full) 218.1±12.58µs 218.0±15.36µs +0.05%

Co-authored-by: Iban Eguia <razican@protonmail.ch>
@HalidOdat HalidOdat requested a review from Razican August 17, 2020 16:29
@github-actions
Copy link

Benchmark for 1686cd4

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 332.7±21.54ns 362.6±44.57ns -8.25%
Arithmetic operations (Full) 227.1±26.54µs 236.6±23.65µs -4.02%
Array access (Execution) 7.1±0.45µs 6.9±0.46µs +2.90%
Array access (Full) 225.8±17.94µs 268.1±15.94µs -15.78%
Array creation (Execution) 2.6±0.12ms 3.1±0.32ms -16.13%
Array creation (Full) 3.2±0.30ms 3.6±0.21ms -11.11%
Array pop (Execution) 997.8±129.01µs 937.8±63.06µs +6.40%
Array pop (Full) 1284.3±115.80µs 1563.3±90.17µs -17.85%
Boolean Object Access (Execution) 3.5±0.19µs 4.1±0.39µs -14.63%
Boolean Object Access (Full) 241.9±25.59µs 236.9±25.51µs +2.11%
Create Realm 465.3±22.46ns 463.7±22.59ns +0.35%
Dynamic Object Property Access (Execution) 5.4±0.26µs 4.3±0.21µs +25.58%
Dynamic Object Property Access (Full) 256.1±22.36µs 224.7±25.27µs +13.97%
Expression (Lexer) 2.4±0.11µs 2.3±0.25µs +4.35%
Expression (Parser) 4.7±0.57µs 5.1±0.32µs -7.84%
Fibonacci (Execution) 949.3±63.64µs 856.2±86.71µs +10.87%
Fibonacci (Full) 1015.2±65.88µs 1225.1±70.53µs -17.13%
For loop (Execution) 23.6±1.61µs 19.7±1.89µs +19.80%
For loop (Full) 229.3±10.31µs 234.2±21.60µs -2.09%
For loop (Lexer) 4.2±0.27µs 5.2±0.27µs -19.23%
For loop (Parser) 14.0±0.81µs 14.4±0.95µs -2.78%
Goal Symbols (Parser) 8.5±0.54µs 8.7±0.55µs -2.30%
Hello World (Lexer) 854.3±39.38ns 844.5±53.42ns +1.16%
Hello World (Parser) 2.1±0.19µs 2.1±0.21µs 0.00%
Long file (Parser) 6.6±0.27ms 6.5±0.26ms +1.54%
Number Object Access (Execution) 3.2±0.42µs 3.1±0.38µs +3.23%
Number Object Access (Full) 217.4±16.68µs 259.5±15.47µs -16.22%
Object Creation (Execution) 4.5±0.36µs 3.9±0.45µs +15.38%
Object Creation (Full) 282.0±33.73µs 310.9±11.39µs -9.30%
RegExp (Execution) 69.1±4.15µs 60.2±6.70µs +14.78%
RegExp (Full) 416.6±26.32µs 416.6±24.60µs 0.00%
RegExp Literal (Execution) 69.9±5.12µs 71.6±4.47µs -2.37%
RegExp Literal (Full) 340.9±31.03µs 343.9±18.78µs -0.87%
RegExp Literal Creation (Execution) 67.1±5.58µs 58.8±5.92µs +14.12%
RegExp Literal Creation (Full) 416.0±25.49µs 345.9±30.04µs +20.27%
Static Object Property Access (Execution) 4.0±0.26µs 4.7±0.27µs -14.89%
Static Object Property Access (Full) 231.8±23.45µs 263.1±11.69µs -11.90%
String Object Access (Execution) 5.3±0.28µs 6.0±0.67µs -11.67%
String Object Access (Full) 220.8±24.58µs 260.0±17.79µs -15.08%
String comparison (Execution) 5.5±0.61µs 6.1±0.39µs -9.84%
String comparison (Full) 259.6±14.94µs 257.7±17.78µs +0.74%
String concatenation (Execution) 4.7±0.49µs 4.1±0.29µs +14.63%
String concatenation (Full) 260.2±18.57µs 241.1±25.82µs +7.92%
String copy (Execution) 3.1±0.23µs 3.6±0.18µs -13.89%
String copy (Full) 237.9±27.34µs 249.0±13.99µs -4.46%
Symbols (Execution) 2.8±0.26µs 2.9±0.15µs -3.45%
Symbols (Full) 210.6±22.29µs 234.9±11.05µs -10.34%

@HalidOdat HalidOdat merged commit c9afbf4 into master Aug 18, 2020
@HalidOdat HalidOdat deleted the refactor/function branch August 18, 2020 16:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
execution Issues or PRs related to code execution technical debt
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants