Skip to content

Instantly share code, notes, and snippets.

@IngwiePhoenix
Created October 10, 2025 18:33
Show Gist options
  • Select an option

  • Save IngwiePhoenix/ffd94b59aeabaa029b912d7a4a1b810a to your computer and use it in GitHub Desktop.

Select an option

Save IngwiePhoenix/ffd94b59aeabaa029b912d7a4a1b810a to your computer and use it in GitHub Desktop.
modernc.org/quickjs compare -- Orion O6

Hardware

Radxa Orion O6

  • Alpine Linux 3.22
  • Go 1.24.7 (forgot to update beforehand, oops)
  • NVMe Patriot P300 128GB (where tf did my Samsung go o.o?...)
  • Orion specific: ACPI boot mode, 0.2.2-1 FW
root@mobileboi ~/w/quickjs (master)# git describe
v0.16.0-6-g7e77b77
root@mobileboi ~/w/quickjs (master)# git rev-parse HEAD
7e77b77aba64c4e201d8ed085744a85a2c7bd7fc
root@mobileboi ~/w/q/compare (master)# make benchmark
go test -vet=off -timeout 24h -run @ -bench . -benchtime 5s | go run benchreport.go
go: downloading modernc.org/quickjs v0.16.0
go: downloading github.com/fastschema/qjs v0.0.3
go: downloading github.com/dop251/goja v0.0.0-20250630131328-58d95d85e994
go: downloading modernc.org/libquickjs v0.12.0
go: downloading modernc.org/libc v1.66.10
go: downloading golang.org/x/text v0.3.8
go: downloading github.com/dlclark/regexp2 v1.11.4
go: downloading github.com/google/pprof v0.0.0-20230207041349-798e818bf904
go: downloading github.com/go-sourcemap/sourcemap v2.1.3+incompatible
go: downloading github.com/tetratelabs/wazero v1.9.0
go: downloading golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b
go: downloading modernc.org/mathutil v1.7.1
go: downloading github.com/dustin/go-humanize v1.0.1
go: downloading github.com/google/uuid v1.6.0
go: downloading modernc.org/memory v1.11.0
go: downloading golang.org/x/sys v0.35.0
go: downloading github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec
goos: linux
goarch: arm64
pkg: modernc.org/quickjs/compare
BenchmarkCCGO/array_for.js-12 219220 27303 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/array_for_in.js-12 66991 88400 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/array_for_of.js-12 129396 42194 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/array_hole_length_decr.js-12 8304 723933 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/array_length_decr.js-12 7239 1409837 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/array_pop.js-12 9792 593970 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/array_prop_create.js-12 28875 207652 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/array_push.js-12 11972 503529 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/array_read.js-12 3318248 1811 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/array_slice.js-12 28828 223639 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/array_write.js-12 7173639 833.8 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/date_now.js-12 5405502 1058 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/empty_do_loop.js-12 63072244 90.76 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/empty_down_loop.js-12 93866256 58.98 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/empty_down_loop2.js-12 23609725 223.0 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/empty_loop.js-12 109177836 55.33 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/float_arith.js-12 29492 202448 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/float_toExponential.js-12 1480348 4060 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/float_toFixed.js-12 1558831 7820 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/float_toPrecision.js-12 893572 18163 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/float_toString.js-12 1200598 4945 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/float_to_string.js-12 1552548 3807 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/func_call.js-12 3461888 1715 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/func_closure_call.js-12 3561477 2240 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/global_destruct.js-12 621330 9620 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/global_func_call.js-12 2753246 3098 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/global_read.js-12 8978211 672.2 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/global_write.js-12 9244408 603.9 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/int_arith.js-12 35368 167906 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/int_toString.js-12 2188333 2754 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/int_to_string.js-12 3063832 2817 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/int_to_string2.js-12 3372100 1755 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/local_destruct.js-12 211617 24445 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/map_set_bigint.js-12 2108 2682661 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/map_set_int.js-12 1176 4979469 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/map_set_string.js-12 1743 3166054 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/math_min.js-12 8950 653527 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/prop_clone.js-12 526674 11422 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/prop_create.js-12 654601 9014 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/prop_delete.js-12 305200 35864 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/prop_read.js-12 8596444 694.9 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/prop_update.js-12 3773298 1579 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/prop_write.js-12 10154043 600.8 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/regexp_ascii.js-12 997 6148622 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/regexp_utf16.js-12 876 6141690 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/string_build1.js-12 29316 200619 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/string_build1x.js-12 28935 200345 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/string_build2.js-12 10026 596239 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/string_build2c.js-12 28785 208440 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/string_build3.js-12 7879 759589 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/string_build4.js-12 8935 996620 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/string_build_large1.js-12 364 16292876 ns/op 10 B/op 0 allocs/op
BenchmarkCCGO/string_build_large2.js-12 316 18757896 ns/op 11 B/op 0 allocs/op
BenchmarkCCGO/string_to_float.js-12 8301414 1694 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/string_to_int.js-12 7779608 767.3 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/typed_array_read.js-12 3487815 1670 ns/op 0 B/op 0 allocs/op
BenchmarkCCGO/typed_array_write.js-12 6831664 2141 ns/op 0 B/op 0 allocs/op
BenchmarkQJS/array_for.js-12 101181 59091 ns/op 5 B/op 0 allocs/op
BenchmarkQJS/array_for_in.js-12 149110 205123 ns/op 3 B/op 0 allocs/op
BenchmarkQJS/array_for_of.js-12 394936 79838 ns/op 1 B/op 0 allocs/op
BenchmarkQJS/array_hole_length_decr.js-12 14290 1360666 ns/op 39 B/op 0 allocs/op
BenchmarkQJS/array_length_decr.js-12 6100 951076 ns/op 92 B/op 0 allocs/op
BenchmarkQJS/array_pop.js-12 10000 742869 ns/op 56 B/op 0 allocs/op
BenchmarkQJS/array_prop_create.js-12 5041 1076488 ns/op 100 B/op 0 allocs/op
BenchmarkQJS/array_push.js-12 7876 735500 ns/op 70 B/op 0 allocs/op
BenchmarkQJS/array_read.js-12 6533822 3319 ns/op 0 B/op 0 allocs/op
BenchmarkQJS/array_slice.js-12 22207 269780 ns/op 25 B/op 0 allocs/op
BenchmarkQJS/array_write.js-12 845445 6882 ns/op 0 B/op 0 allocs/op
BenchmarkQJS/date_now.js-12 3713814 1649 ns/op 0 B/op 0 allocs/op
BenchmarkQJS/empty_do_loop.js-12 23841398 250.5 ns/op 0 B/op 0 allocs/op
BenchmarkQJS/empty_down_loop.js-12 24165274 247.0 ns/op 0 B/op 0 allocs/op
BenchmarkQJS/empty_down_loop2.js-12 15513649 386.0 ns/op 0 B/op 0 allocs/op
BenchmarkQJS/empty_loop.js-12 57996292 255.7 ns/op 0 B/op 0 allocs/op
BenchmarkQJS/float_arith.js-12 7924 737734 ns/op 64 B/op 0 allocs/op
BenchmarkQJS/float_toExponential.js-12 236268 24823 ns/op 2 B/op 0 allocs/op
BenchmarkQJS/float_toFixed.js-12 686689 20478 ns/op 0 B/op 0 allocs/op
BenchmarkQJS/float_toPrecision.js-12 1003510 22938 ns/op 0 B/op 0 allocs/op
BenchmarkQJS/float_toString.js-12 202964 29122 ns/op 2 B/op 0 allocs/op
BenchmarkQJS/float_to_string.js-12 277296 21178 ns/op 1 B/op 0 allocs/op
BenchmarkQJS/func_call.js-12 2899959 2086 ns/op 0 B/op 0 allocs/op
BenchmarkQJS/func_closure_call.js-12 2682987 2219 ns/op 0 B/op 0 allocs/op
BenchmarkQJS/global_destruct.js-12 149418 39731 ns/op 3 B/op 0 allocs/op
BenchmarkQJS/global_func_call.js-12 2417223 2464 ns/op 0 B/op 0 allocs/op
BenchmarkQJS/global_read.js-12 17731502 1158 ns/op 0 B/op 0 allocs/op
BenchmarkQJS/global_write.js-12 15333351 1319 ns/op 0 B/op 0 allocs/op
BenchmarkQJS/int_arith.js-12 10000 527883 ns/op 50 B/op 0 allocs/op
BenchmarkQJS/int_toString.js-12 1000000 5205 ns/op 0 B/op 0 allocs/op
BenchmarkQJS/int_to_string.js-12 1242348 4811 ns/op 0 B/op 0 allocs/op
BenchmarkQJS/int_to_string2.js-12 2191486 2754 ns/op 0 B/op 0 allocs/op
BenchmarkQJS/local_destruct.js-12 34587 173684 ns/op 14 B/op 0 allocs/op
BenchmarkQJS/map_set_bigint.js-12 200 94225460 ns/op 2544 B/op 0 allocs/op
BenchmarkQJS/map_set_int.js-12 86 66327130 ns/op 5917 B/op 0 allocs/op
BenchmarkQJS/map_set_string.js-12 604 9995055 ns/op 842 B/op 0 allocs/op
BenchmarkQJS/math_min.js-12 22364 268275 ns/op 22 B/op 0 allocs/op
BenchmarkQJS/prop_clone.js-12 109436 54564 ns/op 4 B/op 0 allocs/op
BenchmarkQJS/prop_create.js-12 669679 60829 ns/op 0 B/op 0 allocs/op
BenchmarkQJS/prop_delete.js-12 78238 75868 ns/op 6 B/op 0 allocs/op
BenchmarkQJS/prop_read.js-12 14789090 1353 ns/op 0 B/op 0 allocs/op
BenchmarkQJS/prop_update.js-12 2633667 2298 ns/op 0 B/op 0 allocs/op
BenchmarkQJS/prop_write.js-12 6203073 967.1 ns/op 0 B/op 0 allocs/op
BenchmarkQJS/regexp_ascii.js-12 1609 43563654 ns/op 346 B/op 0 allocs/op
BenchmarkQJS/regexp_utf16.js-12 1603 3768271 ns/op 348 B/op 0 allocs/op
BenchmarkQJS/string_build1.js-12 19182 1733578 ns/op 26 B/op 0 allocs/op
BenchmarkQJS/string_build1x.js-12 3362 1744314 ns/op 153 B/op 0 allocs/op
BenchmarkQJS/string_build2.js-12 3142 1875762 ns/op 163 B/op 0 allocs/op
BenchmarkQJS/string_build2c.js-12 10000 1854368 ns/op 51 B/op 0 allocs/op
BenchmarkQJS/string_build3.js-12 3823 1549033 ns/op 134 B/op 0 allocs/op
BenchmarkQJS/string_build4.js-12 2602 2309747 ns/op 195 B/op 0 allocs/op
BenchmarkQJS/string_build_large1.js-12 28 201519481 ns/op 87126 B/op 2 allocs/op
BenchmarkQJS/string_build_large2.js-12 76 197145861 ns/op 32099 B/op 0 allocs/op
BenchmarkQJS/string_to_float.js-12 1317391 4684 ns/op 0 B/op 0 allocs/op
BenchmarkQJS/string_to_int.js-12 10638424 2388 ns/op 0 B/op 0 allocs/op
BenchmarkQJS/typed_array_read.js-12 6626338 3263 ns/op 0 B/op 0 allocs/op
BenchmarkQJS/typed_array_write.js-12 3082159 6920 ns/op 0 B/op 0 allocs/op
BenchmarkGOJA/array_for.js-12 118255 56507 ns/op 672 B/op 79 allocs/op
BenchmarkGOJA/array_for_in.js-12 31831 222694 ns/op 24786 B/op 747 allocs/op
BenchmarkGOJA/array_for_of.js-12 28356 250999 ns/op 55857 B/op 689 allocs/op
BenchmarkGOJA/array_hole_length_decr.js-12 10000 808391 ns/op 65719 B/op 1840 allocs/op
BenchmarkGOJA/array_length_decr.js-12 7576 768829 ns/op 109363 B/op 3411 allocs/op
BenchmarkGOJA/array_pop.js-12 12438 590867 ns/op 53860 B/op 1910 allocs/op
BenchmarkGOJA/array_prop_create.js-12 7236 972592 ns/op 56202 B/op 2406 allocs/op
BenchmarkGOJA/array_push.js-12 10000 667670 ns/op 29689 B/op 1395 allocs/op
BenchmarkGOJA/array_read.js-12 2531148 2777 ns/op 88 B/op 11 allocs/op
BenchmarkGOJA/array_slice.js-12 16521 356403 ns/op 98334 B/op 2666 allocs/op
BenchmarkGOJA/array_write.js-12 8740786 967.7 ns/op 8 B/op 1 allocs/op
BenchmarkGOJA/date_now.js-12 7155302 1031 ns/op 16 B/op 1 allocs/op
BenchmarkGOJA/empty_do_loop.js-12 18136087 275.7 ns/op 8 B/op 0 allocs/op
BenchmarkGOJA/empty_down_loop.js-12 47283634 266.0 ns/op 8 B/op 0 allocs/op
BenchmarkGOJA/empty_down_loop2.js-12 22576455 359.3 ns/op 8 B/op 0 allocs/op
BenchmarkGOJA/empty_loop.js-12 33531710 315.1 ns/op 8 B/op 0 allocs/op
BenchmarkGOJA/float_arith.js-12 6646 812471 ns/op 46003 B/op 5745 allocs/op
BenchmarkGOJA/float_toExponential.js-12 1706244 5589 ns/op 137 B/op 11 allocs/op
BenchmarkGOJA/float_toFixed.js-12 1000000 13289 ns/op 325 B/op 19 allocs/op
BenchmarkGOJA/float_toPrecision.js-12 1506378 5919 ns/op 130 B/op 10 allocs/op
BenchmarkGOJA/float_toString.js-12 1923591 4239 ns/op 123 B/op 11 allocs/op
BenchmarkGOJA/float_to_string.js-12 1903947 4167 ns/op 171 B/op 14 allocs/op
BenchmarkGOJA/func_call.js-12 4835467 1448 ns/op 40 B/op 4 allocs/op
BenchmarkGOJA/func_closure_call.js-12 4014106 1373 ns/op 40 B/op 4 allocs/op
BenchmarkGOJA/global_destruct.js-12 224122 34209 ns/op 4568 B/op 59 allocs/op
BenchmarkGOJA/global_func_call.js-12 3856713 1782 ns/op 40 B/op 4 allocs/op
BenchmarkGOJA/global_read.js-12 10593130 961.0 ns/op 8 B/op 1 allocs/op
BenchmarkGOJA/global_write.js-12 3464790 2326 ns/op 200 B/op 5 allocs/op
BenchmarkGOJA/int_arith.js-12 12883 556752 ns/op 21825 B/op 2723 allocs/op
BenchmarkGOJA/int_toString.js-12 2646417 2271 ns/op 68 B/op 5 allocs/op
BenchmarkGOJA/int_to_string.js-12 2783630 2269 ns/op 75 B/op 7 allocs/op
BenchmarkGOJA/int_to_string2.js-12 4460926 1627 ns/op 112 B/op 8 allocs/op
BenchmarkGOJA/local_destruct.js-12 267859 21466 ns/op 4184 B/op 51 allocs/op
BenchmarkGOJA/map_set_bigint.js-12 1964 4472501 ns/op 246626 B/op 8513 allocs/op
BenchmarkGOJA/map_set_int.js-12 2306 2228113 ns/op 150654 B/op 2517 allocs/op
BenchmarkGOJA/map_set_string.js-12 4442 4753055 ns/op 195561 B/op 6317 allocs/op
BenchmarkGOJA/math_min.js-12 10000 980884 ns/op 11969 B/op 1491 allocs/op
BenchmarkGOJA/prop_clone.js-12 197432 35930 ns/op 6064 B/op 144 allocs/op
BenchmarkGOJA/prop_create.js-12 244071 22055 ns/op 3312 B/op 16 allocs/op
BenchmarkGOJA/prop_delete.js-12 130017 43128 ns/op 6016 B/op 143 allocs/op
BenchmarkGOJA/prop_read.js-12 5309947 1204 ns/op 40 B/op 4 allocs/op
BenchmarkGOJA/prop_update.js-12 4482890 1587 ns/op 40 B/op 4 allocs/op
BenchmarkGOJA/prop_write.js-12 7524877 1295 ns/op 8 B/op 1 allocs/op
BenchmarkGOJA/regexp_ascii.js-12 664 12681710 ns/op 1409400 B/op 18749 allocs/op
BenchmarkGOJA/regexp_utf16.js-12 471 15164999 ns/op 1496178 B/op 20751 allocs/op
BenchmarkGOJA/string_build1.js-12 2834 2109138 ns/op 552313 B/op 2746 allocs/op
BenchmarkGOJA/string_build1x.js-12 4701 1636532 ns/op 552312 B/op 2746 allocs/op
BenchmarkGOJA/string_build2.js-12 2992 2026963 ns/op 552314 B/op 2746 allocs/op
BenchmarkGOJA/string_build2c.js-12 3997 2318955 ns/op 1085894 B/op 2746 allocs/op
BenchmarkGOJA/string_build3.js-12 4762 1558149 ns/op 552312 B/op 2746 allocs/op
BenchmarkGOJA/string_build4.js-12 3907 1874111 ns/op 552312 B/op 2746 allocs/op
BenchmarkGOJA/string_build_large1.js-12 6 929990139 ns/op 1266130886 B/op 59839 allocs/op
BenchmarkGOJA/string_build_large2.js-12 5 1651623696 ns/op 1266135497 B/op 59924 allocs/op
BenchmarkGOJA/string_to_float.js-12 4045060 1304 ns/op 96 B/op 7 allocs/op
BenchmarkGOJA/string_to_int.js-12 10105581 631.2 ns/op 40 B/op 5 allocs/op
BenchmarkGOJA/typed_array_read.js-12 2845386 2207 ns/op 88 B/op 11 allocs/op
BenchmarkGOJA/typed_array_write.js-12 2816113 2497 ns/op 167 B/op 20 allocs/op
PASS
ok modernc.org/quickjs/compare 1931.677s
arg CCGO GOJA QJS
-----------------------------------------------------------------------
array_for.js-12 1.000 2.070 2.164
array_for_in.js-12 1.000 2.519 2.320
array_for_of.js-12 1.000 5.949 1.892
array_hole_length_decr.js-12 1.000 1.117 1.880
array_length_decr.js-12 1.000 0.545 0.675
array_pop.js-12 1.000 0.995 1.251
array_prop_create.js-12 1.000 4.684 5.184
array_push.js-12 1.000 1.326 1.461
array_read.js-12 1.000 1.533 1.833
array_slice.js-12 1.000 1.594 1.206
array_write.js-12 1.000 1.161 8.254
date_now.js-12 1.000 0.974 1.559
empty_do_loop.js-12 1.000 3.038 2.760
empty_down_loop.js-12 1.000 4.510 4.188
empty_down_loop2.js-12 1.000 1.611 1.731
empty_loop.js-12 1.000 5.695 4.621
float_arith.js-12 1.000 4.013 3.644
float_toExponential.js-12 1.000 1.377 6.114
float_toFixed.js-12 1.000 1.699 2.619
float_toPrecision.js-12 1.000 0.326 1.263
float_toString.js-12 1.000 0.857 5.889
float_to_string.js-12 1.000 1.095 5.563
func_call.js-12 1.000 0.844 1.216
func_closure_call.js-12 1.000 0.613 0.991
global_destruct.js-12 1.000 3.556 4.130
global_func_call.js-12 1.000 0.575 0.795
global_read.js-12 1.000 1.430 1.723
global_write.js-12 1.000 3.852 2.184
int_arith.js-12 1.000 3.316 3.144
int_toString.js-12 1.000 0.825 1.890
int_to_string.js-12 1.000 0.805 1.708
int_to_string2.js-12 1.000 0.927 1.569
local_destruct.js-12 1.000 0.878 7.105
map_set_bigint.js-12 1.000 1.667 35.124
map_set_int.js-12 1.000 0.447 13.320
map_set_string.js-12 1.000 1.501 3.157
math_min.js-12 1.000 1.501 0.411
prop_clone.js-12 1.000 3.146 4.777
prop_create.js-12 1.000 2.447 6.748
prop_delete.js-12 1.000 1.203 2.115
prop_read.js-12 1.000 1.733 1.947
prop_update.js-12 1.000 1.005 1.455
prop_write.js-12 1.000 2.155 1.610
regexp_ascii.js-12 1.000 2.063 7.085
regexp_utf16.js-12 1.000 2.469 0.614
string_build1.js-12 1.000 10.513 8.641
string_build1x.js-12 1.000 8.169 8.707
string_build2.js-12 1.000 3.400 3.146
string_build2c.js-12 1.000 11.125 8.896
string_build3.js-12 1.000 2.051 2.039
string_build4.js-12 1.000 1.880 2.318
string_build_large1.js-12 1.000 57.080 12.369
string_build_large2.js-12 1.000 88.050 10.510
string_to_float.js-12 1.000 0.770 2.765
string_to_int.js-12 1.000 0.823 3.112
typed_array_read.js-12 1.000 1.322 1.954
typed_array_write.js-12 1.000 1.166 3.232
-----------------------------------------------------------------------
geomean 1.000 1.935 2.841
CCGO GOJA QJS
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment