Skip to content

Conversation

@Pavel-Durov
Copy link

@Pavel-Durov Pavel-Durov commented Dec 17, 2025

When a function's address is taken, it is now marked as yk_outline to prevent tracing calls from being added, ensuring function pointer identity is maintained.

Benchmark results:

$ haste list    
  0: address-taken-functions-opt
  1: address-taken-functions-main
  2: address-taken-functions-opt

$ haste diff 0 1
Datum0: address-taken-functions-opt
Datum1: address-taken-functions-main

confidence level: 99%

 Benchmark              Datum0 (ms)  Datum1 (ms)  Ratio  Summary           
 permute/yklua/1000     10671 ± 397  10132 ± 704   0.95  indistinguishable 
 sieve/yklua/3000        4928 ± 387   4762 ±  18   0.97  indistinguishable 
 nbody/yklua/250000      5520 ± 236   5438 ± 163   0.99  indistinguishable 
 mandelbrot/yklua/500    1173 ±   8   1169 ±   1   1.00  indistinguishable 
 havlak/yklua/1500      66814 ±4363  66571 ±3693   1.00  indistinguishable 
 towers/yklua/600       11188 ± 128  11195 ± 286   1.00  indistinguishable 
 cd/yklua/250           36088 ± 701  36154 ± 532   1.00  indistinguishable 
 list/yklua/1500         8872 ± 551   8901 ± 453   1.00  indistinguishable 
 storage/yklua/1000     28259 ± 341  28358 ± 236   1.00  indistinguishable 
 deltablue/yklua/12000  10459 ±  66  10509 ± 319   1.00  indistinguishable 
 json/yklua/100         13570 ±  37  13663 ± 199   1.01  indistinguishable 
 bounce/yklua/1500      10390 ± 210  10463 ± 425   1.01  indistinguishable 
 queens/yklua/1000       6500 ± 128   6594 ± 172   1.01  indistinguishable 
 richards/yklua/100     46865 ±1774  47568 ±1136   1.02  indistinguishable 
pd@bencher15 ~/yk-benchmarks main ~ 8c58dcd8ceb0744a4ba04ca27fb6e0c1dd7e274b
[18:12:59] $ haste diff 0 2
Datum0: address-taken-functions-opt
Datum2: address-taken-functions-opt

confidence level: 99%

 Benchmark              Datum0 (ms)  Datum2 (ms)  Ratio  Summary           
 json/yklua/100         13570 ±  37  13776 ± 129   1.02  1.52% slower      
 permute/yklua/1000     10671 ± 397  10201 ± 865   0.96  indistinguishable 
 havlak/yklua/1500      66814 ±4363  65136 ± 427   0.97  indistinguishable 
 sieve/yklua/3000        4928 ± 387   4816 ±  26   0.98  indistinguishable 
 nbody/yklua/250000      5520 ± 236   5453 ± 251   0.99  indistinguishable 
 bounce/yklua/1500      10390 ± 210  10295 ± 366   0.99  indistinguishable 
 mandelbrot/yklua/500    1173 ±   8   1171 ±   4   1.00  indistinguishable 
 towers/yklua/600       11188 ± 128  11166 ± 459   1.00  indistinguishable 
 deltablue/yklua/12000  10459 ±  66  10449 ± 149   1.00  indistinguishable 
 richards/yklua/100     46865 ±1774  46958 ± 819   1.00  indistinguishable 
 cd/yklua/250           36088 ± 701  36260 ± 466   1.00  indistinguishable 
 list/yklua/1500         8872 ± 551   8926 ± 595   1.01  indistinguishable 
 queens/yklua/1000       6500 ± 128   6563 ± 332   1.01  indistinguishable 
 storage/yklua/1000     28259 ± 341  28556 ± 574   1.01  indistinguishable 

When a function's address is taken, it is now marked as yk_outline to prevent tracing calls from being added, ensuring function pointer identity is maintained.
@Pavel-Durov Pavel-Durov changed the title ]Address taken functions as opt. [experiment ]Address taken functions as opt. Dec 17, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant