From 38982086b586308ee965320951abdda7111c4f44 Mon Sep 17 00:00:00 2001 From: Leonid Yuriev Date: Sun, 2 Jun 2019 18:05:05 +0300 Subject: [PATCH] update/actualize README and results. --- license.txt => LICENSE | 3 +- README.md | 104 ++++ readme.md | 110 ---- result/corei7920@2.67_cygwin32_gcc4.8.csv | 137 ----- result/corei7920@2.67_cygwin32_gcc4.8.html | 485 ----------------- result/corei7920@2.67_cygwin64_gcc4.8.csv | 137 ----- result/corei7920@2.67_cygwin64_gcc4.8.html | 485 ----------------- result/corei7920@2.67_win32_vc2013.csv | 154 ------ result/corei7920@2.67_win64_vc2013.csv | 154 ------ result/corei7920@2.67_win64_vc2013.html | 502 ------------------ ...920@2.67_win64_vc2013_randomdigit_time.png | Bin 17218 -> 0 bytes ....67_win64_vc2013_randomdigit_timedigit.png | Bin 50830 -> 0 bytes ...igit_i7-4600U@2.10_linux-x86_64-gcc8.3.csv | 171 ++++++ ...it_i7-4600U@2.10_linux-x86_64-gcc8.3.html} | 360 ++++++------- ...igit_i7-4600U@2.10_linux-x86_64-gcc8.3.png | Bin 0 -> 17382 bytes ...digit_i7-7820@2.90_linux-x86_64-gcc9.1.csv | 171 ++++++ ...git_i7-7820@2.90_linux-x86_64-gcc9.1.html} | 349 ++++++------ ...ntal_i7-4600U@2.10_linux-x86_64-gcc8.3.csv | 171 ++++++ ...al_i7-4600U@2.10_linux-x86_64-gcc8.3.html} | 347 ++++++------ result/template.php | 33 +- result/unknown_mac32_clang7.0.csv | 154 ------ result/unknown_mac64_clang10.0.csv | 171 ------ result/unknown_mac64_clang7.0.csv | 154 ------ result/unknown_mac64_clang7.0.html | 502 ------------------ 24 files changed, 1180 insertions(+), 3674 deletions(-) rename license.txt => LICENSE (94%) create mode 100644 README.md delete mode 100644 readme.md delete mode 100644 result/corei7920@2.67_cygwin32_gcc4.8.csv delete mode 100644 result/corei7920@2.67_cygwin32_gcc4.8.html delete mode 100644 result/corei7920@2.67_cygwin64_gcc4.8.csv delete mode 100644 result/corei7920@2.67_cygwin64_gcc4.8.html delete mode 100644 result/corei7920@2.67_win32_vc2013.csv delete mode 100644 result/corei7920@2.67_win64_vc2013.csv delete mode 100644 result/corei7920@2.67_win64_vc2013.html delete mode 100644 result/corei7920@2.67_win64_vc2013_randomdigit_time.png delete mode 100644 result/corei7920@2.67_win64_vc2013_randomdigit_timedigit.png create mode 100644 result/randomdigit_i7-4600U@2.10_linux-x86_64-gcc8.3.csv rename result/{unknown_mac64_clang10.0.html => randomdigit_i7-4600U@2.10_linux-x86_64-gcc8.3.html} (62%) create mode 100644 result/randomdigit_i7-4600U@2.10_linux-x86_64-gcc8.3.png create mode 100644 result/randomdigit_i7-7820@2.90_linux-x86_64-gcc9.1.csv rename result/{corei7920@2.67_win32_vc2013.html => randomdigit_i7-7820@2.90_linux-x86_64-gcc9.1.html} (62%) create mode 100644 result/sequental_i7-4600U@2.10_linux-x86_64-gcc8.3.csv rename result/{unknown_mac32_clang7.0.html => sequental_i7-4600U@2.10_linux-x86_64-gcc8.3.html} (63%) delete mode 100644 result/unknown_mac32_clang7.0.csv delete mode 100644 result/unknown_mac64_clang10.0.csv delete mode 100644 result/unknown_mac64_clang7.0.csv delete mode 100644 result/unknown_mac64_clang7.0.html diff --git a/license.txt b/LICENSE similarity index 94% rename from license.txt rename to LICENSE index 265db88..347d6e6 100644 --- a/license.txt +++ b/LICENSE @@ -1,4 +1,5 @@ -Copyright (C) 2014 Milo Yip +Copyright (C) 2019 Leonid Yuriev. +Copyright (C) 2014 Milo Yip. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md new file mode 100644 index 0000000..7e5a46f --- /dev/null +++ b/README.md @@ -0,0 +1,104 @@ +# dtoa Benchmark + +Copyright(c) 2019 Leonid Yuriev , +Copyright(c) 2014 Milo Yip + +## Introduction + +This benchmark evaluates the performance of conversion from double precision IEEE-754 floating point (`double`) to ASCII string. The function prototype is: + +~~~~~~~~cpp +void dtoa(double value, char* buffer); +~~~~~~~~ + +The character string result **must** be convertible to the original value **exactly** via some correct implementation of `strtod()`, i.e. roundtrip convertible. + +Note that `dtoa()` is *not* a standard function in C and C++. + +## Procedure + +Firstly the program verifies the correctness of implementations. + +Then, **RandomDigit** case for benchmark is carried out: + +* Generates 2000 random `double` values, filtered out `+/-inf` and `nan`. Then convert them to limited precision (1 to 17 decimal digits in significand). + +* Convert these generated numbers into ASCII. + +* Each digit group is run for 10000 times. The minimum time duration is measured for 42 trials. + +## Build and Run + +1. Obtain [cmake](https://cmake.org/download/) +2. Configure build system by running `cmake .` and build benchmark by running `cmake --build .` +3. On success, run the `dtoa-benchmark` executable is generated at `dtoa-benchmark/` or corresponding subdirectory (e.g `Release` on Windows). +4. The results in CSV format will be written to `dtoa-benchmark/result`. +5. Run GNU `make` in `dtoa-benchmark/result` to generate results in HTML. + +## Results + +The following are results measured by `RandomDigit` testcase on a PC (Core i7-4600U @2.10Ghz), +where `dtoa()` is compiled by GNU C++ 8.3 for x86-64 Linux. +The speedup is based on `sprintf`'s _Sum_ values. + +Function | Min ns | RMS ns | Max ns | Sum ns | Speedup | +:-------------|--------:|---------:|--------:|----------:|--------:| +erthink | 25.9 | 46.083 | 62.8 | 764.1 | ×20.1 | +ryu | 47.1 | 59.860 | 70.1 | 1010.0 | ×15.2 | +milo | 42.7 | 64.336 | 78.1 | 1083.0 | ×14.2 | +emyg | 42.2 | 64.330 | 77.8 | 1083.0 | ×14.2 | +floaxie | 27.4 | 73.213 | 98.2 | 1181.0 | ×13.0 | +grisu2 | 73.4 | 90.677 | 109.3 | 1532.0 | ×10.0 | +doubleconv | 78.7 | 120.223 | 150.7 | 2021.0 | ×7.6 | +fmt | 97.3 | 126.511 | 151.5 | 2137.6 | ×7.2 | +fpconv | 107.1 | 154.852 | 178.6 | 2611.5 | ×5.9 | +sprintf | 826.0 | 904.252 | 968.1 | 15353.2 | ×1.0 | +ostrstream | 1210.0 | 1289.817 | 1357.3 | 21912.5 | ×0.7 | +ostringstream | 1284.7 | 1374.006 | 1452.8 | 23338.3 | ×0.7 | + +![randomdigit_i7-4600U@2.10_linux-x86_64-gcc8.3.png](result/randomdigit_i7-4600U@2.10_linux-x86_64-gcc8.3.png) + +* [i7-4600U@2.10, linux-x86_64, GNU C/C++ 8.3](https://leo-yuriev.github.io/dtoa-benchmark/result/randomdigit_i7-4600U@2.10_linux-x86_64-gcc8.3.html) +* [i7-7820@2.90, linux-x86_64, GNU C/C++ 9.1](https://leo-yuriev.github.io/dtoa-benchmark/result/randomdigit_i7-7820@2.90_linux-x86_64-gcc9.1.html) + +## Implementations + +Function  | Description +--------------|----------- +sprintf | `sprintf()` in C standard library with `"%.17g"` format. +[gay](http://www.netlib.org/fp/) | David M. Gay's `dtoa()` C implementation. +[grisu2](http://florian.loitsch.com/publications/bench.tar.gz?attredirects=0) | Florian Loitsch's Grisu2 C implementation [1]. +[doubleconv](https://code.google.com/p/double-conversion/) | C++ implementation extracted from Google's V8 JavaScript Engine with `EcmaScriptConverter().ToShortest()` (based on Grisu3, fall back to slower bignum algorithm when Grisu3 failed to produce shortest implementation). +[fpconv](https://github.com/night-shift/fpconv) | [night-shift](https://github.com/night-shift)'s Grisu2 C implementation. +[milo](https://github.com/miloyip/dtoa-benchmark/blob/master/src/milo/dtoa_milo.h) | Milo Yip's Grisu2 C++ header-only implementation. +[erthink](https://github.com/leo-yuriev/erthink/blob/master/erthink_d2a.h) | Leonid Yuriev's Grisu2 C++ header-only implementation. +[ryu](https://github.com/ulfjack/ryu) | Ulf Adams's [Ryū algorithm](https://dl.acm.org/citation.cfm?id=3192369). +null | Do nothing. It measures the overheads of looping and function call +ostringstream | `std::ostringstream` in C++ standard library with `setprecision(17)`. +ostrstream | `std::ostrstream` in C++ standard library with `setprecision(17)`. + +## FAQ + +1. How to add an implementation? + + You may clone an existing implementation file, then modify it and add to `CMakeLists.txt`. + Re-run `cmake` to re-configure and re-build benchmark. + Note that it will automatically register to the benchmark by macro `REGISTER_TEST(name)`. + + **Making pull request of new implementations is welcome.** + +2. Why not converting `double` to `std::string`? + + It may introduce heap allocation, which is a big overhead. User can easily wrap these low-level functions to return `std::string`, if needed. + +3. Why fast `dtoa()` functions is needed? + + They are a very common operations in writing data in text format. The standard way of `sprintf()`, `std::stringstream`, often provides poor performance. The author of this benchmark would optimize the `sprintf` implementation in [RapidJSON](https://github.com/miloyip/rapidjson/). + +## References + +[1] Loitsch, Florian. ["Printing floating-point numbers quickly and accurately with integers."](http://florian.loitsch.com/publications/dtoa-pldi2010.pdf) ACM Sigplan Notices 45.6 (2010): 233-243. + +## Related Benchmarks and Discussions + +* [Printing Floating-Point Numbers](http://www.ryanjuckett.com/programming/printing-floating-point-numbers/) diff --git a/readme.md b/readme.md deleted file mode 100644 index a0e7243..0000000 --- a/readme.md +++ /dev/null @@ -1,110 +0,0 @@ -# dtoa Benchmark - -Copyright(c) 2014 Milo Yip (miloyip@gmail.com) - -## Introduction - -This benchmark evaluates the performance of conversion from double precision IEEE-754 floating point (`double`) to ASCII string. The function prototype is: - -~~~~~~~~cpp -void dtoa(double value, char* buffer); -~~~~~~~~ - -The character string result **must** be convertible to the original value **exactly** via some correct implementation of `strtod()`, i.e. roundtrip convertible. - -Note that `dtoa()` is *not* a standard function in C and C++. - -## Procedure - -Firstly the program verifies the correctness of implementations. - -Then, one case for benchmark is carried out: - -1. **RandomDigit**: Generates 1000 random `double` values, filtered out `+/-inf` and `nan`. Then convert them to limited precision (1 to 17 decimal digits in significand). Finally convert these numbers into ASCII. - -Each digit group is run for 100 times. The minimum time duration is measured for 10 trials. - -## Build and Run - -1. Obtain [premake4](http://industriousone.com/premake/download). -2. Copy premake4 executable to `dtoa-benchmark/build` folder (or system path). -3. Run `premake.bat` or `premake.sh` in `dtoa-benchmark/build` -4. On Windows, build the solution at `dtoa-benchmark/build/vs2008/` or `/vs2010/`. -5. On other platforms, run GNU `make config=release32` (or `release64`) at `dtoa-benchmark/build/gmake/` -6. On success, run the `dtoa` executable is generated at `dtoa-benchmark/` -7. The results in CSV format will be written to `dtoa-benchmark/result`. -8. Run GNU `make` in `dtoa-benchmark/result` to generate results in HTML. - -## Results - -The following are `sequential` results measured on a PC (Core i7 920 @2.67Ghz), where `u32toa()` is compiled by Visual C++ 2013 and run on Windows 64-bit. The speedup is based on `sprintf()`. - -Function  | Time (ns)  | Speedup  ---------------|-----------:|-------: -ostringstream | 2,778.748 | 0.45x -ostrstream | 2,628.365 | 0.48x -gay | 1,646.310 | 0.76x -sprintf | 1,256.376 | 1.00x -fpconv | 273.822 | 4.59x -grisu2 | 220.251 | 5.70x -doubleconv | 201.645 | 6.23x -milo | 138.021 | 9.10x -null | 2.146 | 585.58x - -![corei7920@2.67_win64_vc2013_randomdigit_time](result/corei7920@2.67_win64_vc2013_randomdigit_time.png) - -![corei7920@2.67_win64_vc2013_randomdigit_timedigit](result/corei7920@2.67_win64_vc2013_randomdigit_timedigit.png) - -Note that the `null` implementation does nothing. It measures the overheads of looping and function call. - -Some results of various configurations are located at `dtoa-benchmark/result`. They can be accessed online, with interactivity provided by [Google Charts](https://developers.google.com/chart/): - -* [corei7920@2.67_win32_vc2013](http://rawgit.com/miloyip/dtoa-benchmark/master/result/corei7920@2.67_win32_vc2013.html) -* [corei7920@2.67_win64_vc2013](http://rawgit.com/miloyip/dtoa-benchmark/master/result/corei7920@2.67_win64_vc2013.html) -* [corei7920@2.67_cygwin32_gcc4.8](http://rawgit.com/miloyip/dtoa-benchmark/master/result/corei7920@2.67_cygwin32_gcc4.8.html) -* [corei7920@2.67_cygwin64_gcc4.8](http://rawgit.com/miloyip/dtoa-benchmark/master/result/corei7920@2.67_cygwin64_gcc4.8.html) - -## Implementations - -Function  | Description ---------------|----------- -ostringstream | `std::ostringstream` in C++ standard library with `setprecision(17)`. -ostrstream | `std::ostrstream` in C++ standard library with `setprecision(17)`. -sprintf | `sprintf()` in C standard library with `"%.17g"` format. -[stb_sprintf](https://github.com/nothings/stb) | fast sprintf replacement with `"%.17g"` format. -[gay](http://www.netlib.org/fp/) | David M. Gay's `dtoa()` C implementation. -[grisu2](http://florian.loitsch.com/publications/bench.tar.gz?attredirects=0) | Florian Loitsch's Grisu2 C implementation [1]. -[doubleconv](https://code.google.com/p/double-conversion/) | C++ implementation extracted from Google's V8 JavaScript Engine with `EcmaScriptConverter().ToShortest()` (based on Grisu3, fall back to slower bignum algorithm when Grisu3 failed to produce shortest implementation). -[fpconv](https://github.com/night-shift/fpconv) | [night-shift](https://github.com/night-shift)'s Grisu2 C implementation. -milo | [miloyip](https://github.com/miloyip)'s Grisu2 C++ header-only implementation. -null | Do nothing. - -Notes: - -1. `tostring()` is not tested as it does not fulfill the roundtrip requirement. - -2. Grisu2 is chosen because it can generate better human-readable number and >99.9% of results are in shortest. Grisu3 needs another `dtoa()` implementation for not meeting the shortest requirement. - -## FAQ - -1. How to add an implementation? - - You may clone an existing implementation file. And then modify it. Re-run `premake` to add it to project or makefile. Note that it will automatically register to the benchmark by macro `REGISTER_TEST(name)`. - - Making pull request of new implementations is welcome. - -2. Why not converting `double` to `std::string`? - - It may introduce heap allocation, which is a big overhead. User can easily wrap these low-level functions to return `std::string`, if needed. - -3. Why fast `dtoa()` functions is needed? - - They are a very common operations in writing data in text format. The standard way of `sprintf()`, `std::stringstream`, often provides poor performance. The author of this benchmark would optimize the `sprintf` implementation in [RapidJSON](https://github.com/miloyip/rapidjson/), thus he creates this project. - -## References - -[1] Loitsch, Florian. ["Printing floating-point numbers quickly and accurately with integers."](http://florian.loitsch.com/publications/dtoa-pldi2010.pdf) ACM Sigplan Notices 45.6 (2010): 233-243. - -## Related Benchmarks and Discussions - -* [Printing Floating-Point Numbers](http://www.ryanjuckett.com/programming/printing-floating-point-numbers/) diff --git a/result/corei7920@2.67_cygwin32_gcc4.8.csv b/result/corei7920@2.67_cygwin32_gcc4.8.csv deleted file mode 100644 index 9540a2a..0000000 --- a/result/corei7920@2.67_cygwin32_gcc4.8.csv +++ /dev/null @@ -1,137 +0,0 @@ -doubleype,Function,Digit,doubleime(ms) -randomdigit,doubleconv,1,217.500000 -randomdigit,doubleconv,2,253.400000 -randomdigit,doubleconv,3,255.000000 -randomdigit,doubleconv,4,272.500000 -randomdigit,doubleconv,5,300.800000 -randomdigit,doubleconv,6,314.900000 -randomdigit,doubleconv,7,318.700000 -randomdigit,doubleconv,8,337.800000 -randomdigit,doubleconv,9,348.800000 -randomdigit,doubleconv,10,355.300000 -randomdigit,doubleconv,11,349.900000 -randomdigit,doubleconv,12,377.500000 -randomdigit,doubleconv,13,377.500000 -randomdigit,doubleconv,14,404.500000 -randomdigit,doubleconv,15,406.900000 -randomdigit,doubleconv,16,421.000000 -randomdigit,doubleconv,17,439.500000 -randomdigit,fpconv,1,221.500000 -randomdigit,fpconv,2,245.900000 -randomdigit,fpconv,3,263.400000 -randomdigit,fpconv,4,292.000000 -randomdigit,fpconv,5,322.400000 -randomdigit,fpconv,6,337.300000 -randomdigit,fpconv,7,347.600000 -randomdigit,fpconv,8,360.400000 -randomdigit,fpconv,9,368.300000 -randomdigit,fpconv,10,370.400000 -randomdigit,fpconv,11,376.600000 -randomdigit,fpconv,12,381.900000 -randomdigit,fpconv,13,385.600000 -randomdigit,fpconv,14,393.500000 -randomdigit,fpconv,15,398.800000 -randomdigit,fpconv,16,409.100000 -randomdigit,fpconv,17,419.300000 -randomdigit,grisu2,1,259.000000 -randomdigit,grisu2,2,285.200000 -randomdigit,grisu2,3,327.000000 -randomdigit,grisu2,4,340.400000 -randomdigit,grisu2,5,368.400000 -randomdigit,grisu2,6,381.500000 -randomdigit,grisu2,7,394.300000 -randomdigit,grisu2,8,404.600000 -randomdigit,grisu2,9,419.300000 -randomdigit,grisu2,10,424.600000 -randomdigit,grisu2,11,429.400000 -randomdigit,grisu2,12,440.500000 -randomdigit,grisu2,13,449.500000 -randomdigit,grisu2,14,461.600000 -randomdigit,grisu2,15,469.700000 -randomdigit,grisu2,16,484.200000 -randomdigit,grisu2,17,497.700000 -randomdigit,milo,1,114.300000 -randomdigit,milo,2,134.800000 -randomdigit,milo,3,168.300000 -randomdigit,milo,4,179.900000 -randomdigit,milo,5,204.000000 -randomdigit,milo,6,218.700000 -randomdigit,milo,7,229.500000 -randomdigit,milo,8,238.900000 -randomdigit,milo,9,247.600000 -randomdigit,milo,10,253.100000 -randomdigit,milo,11,261.000000 -randomdigit,milo,12,268.600000 -randomdigit,milo,13,278.200000 -randomdigit,milo,14,290.100000 -randomdigit,milo,15,296.700000 -randomdigit,milo,16,306.800000 -randomdigit,milo,17,312.700000 -randomdigit,null,1,2.200000 -randomdigit,null,2,2.200000 -randomdigit,null,3,2.300000 -randomdigit,null,4,2.200000 -randomdigit,null,5,2.100000 -randomdigit,null,6,2.400000 -randomdigit,null,7,2.300000 -randomdigit,null,8,2.200000 -randomdigit,null,9,2.100000 -randomdigit,null,10,2.400000 -randomdigit,null,11,2.100000 -randomdigit,null,12,2.200000 -randomdigit,null,13,2.500000 -randomdigit,null,14,2.500000 -randomdigit,null,15,2.500000 -randomdigit,null,16,2.500000 -randomdigit,null,17,2.600000 -randomdigit,ostringstream,1,27840.700000 -randomdigit,ostringstream,2,27928.600000 -randomdigit,ostringstream,3,28415.000000 -randomdigit,ostringstream,4,28211.500000 -randomdigit,ostringstream,5,28691.500000 -randomdigit,ostringstream,6,28965.700000 -randomdigit,ostringstream,7,28937.600000 -randomdigit,ostringstream,8,29289.700000 -randomdigit,ostringstream,9,29239.700000 -randomdigit,ostringstream,10,29659.600000 -randomdigit,ostringstream,11,29692.500000 -randomdigit,ostringstream,12,29940.400000 -randomdigit,ostringstream,13,30202.200000 -randomdigit,ostringstream,14,30140.400000 -randomdigit,ostringstream,15,30338.200000 -randomdigit,ostringstream,16,30254.900000 -randomdigit,ostringstream,17,30279.500000 -randomdigit,ostrstream,1,27103.500000 -randomdigit,ostrstream,2,27230.500000 -randomdigit,ostrstream,3,27809.600000 -randomdigit,ostrstream,4,27574.000000 -randomdigit,ostrstream,5,28044.000000 -randomdigit,ostrstream,6,28292.300000 -randomdigit,ostrstream,7,28185.000000 -randomdigit,ostrstream,8,28582.500000 -randomdigit,ostrstream,9,28547.400000 -randomdigit,ostrstream,10,28943.300000 -randomdigit,ostrstream,11,29040.900000 -randomdigit,ostrstream,12,29305.700000 -randomdigit,ostrstream,13,29507.500000 -randomdigit,ostrstream,14,29456.500000 -randomdigit,ostrstream,15,29713.700000 -randomdigit,ostrstream,16,29629.600000 -randomdigit,ostrstream,17,29580.100000 -randomdigit,sprintf,1,25700.900000 -randomdigit,sprintf,2,25767.000000 -randomdigit,sprintf,3,26311.900000 -randomdigit,sprintf,4,26091.100000 -randomdigit,sprintf,5,26613.200000 -randomdigit,sprintf,6,26876.000000 -randomdigit,sprintf,7,26786.200000 -randomdigit,sprintf,8,27164.700000 -randomdigit,sprintf,9,27181.100000 -randomdigit,sprintf,10,27593.100000 -randomdigit,sprintf,11,27558.300000 -randomdigit,sprintf,12,27812.000000 -randomdigit,sprintf,13,28046.200000 -randomdigit,sprintf,14,28046.600000 -randomdigit,sprintf,15,28203.700000 -randomdigit,sprintf,16,28172.700000 -randomdigit,sprintf,17,28161.400000 diff --git a/result/corei7920@2.67_cygwin32_gcc4.8.html b/result/corei7920@2.67_cygwin32_gcc4.8.html deleted file mode 100644 index 9006bbf..0000000 --- a/result/corei7920@2.67_cygwin32_gcc4.8.html +++ /dev/null @@ -1,485 +0,0 @@ - - - - - - - - - - - - -
- - -
-

Source CSV

- -
- -
- - - - -
- - - \ No newline at end of file diff --git a/result/corei7920@2.67_cygwin64_gcc4.8.csv b/result/corei7920@2.67_cygwin64_gcc4.8.csv deleted file mode 100644 index 94b530a..0000000 --- a/result/corei7920@2.67_cygwin64_gcc4.8.csv +++ /dev/null @@ -1,137 +0,0 @@ -doubleype,Function,Digit,doubleime(ms) -randomdigit,doubleconv,1,147.100000 -randomdigit,doubleconv,2,162.900000 -randomdigit,doubleconv,3,166.800000 -randomdigit,doubleconv,4,178.800000 -randomdigit,doubleconv,5,184.600000 -randomdigit,doubleconv,6,193.900000 -randomdigit,doubleconv,7,194.100000 -randomdigit,doubleconv,8,202.600000 -randomdigit,doubleconv,9,205.400000 -randomdigit,doubleconv,10,218.900000 -randomdigit,doubleconv,11,209.700000 -randomdigit,doubleconv,12,225.500000 -randomdigit,doubleconv,13,222.100000 -randomdigit,doubleconv,14,239.500000 -randomdigit,doubleconv,15,236.700000 -randomdigit,doubleconv,16,244.400000 -randomdigit,doubleconv,17,258.000000 -randomdigit,fpconv,1,158.200000 -randomdigit,fpconv,2,176.500000 -randomdigit,fpconv,3,192.000000 -randomdigit,fpconv,4,209.300000 -randomdigit,fpconv,5,220.400000 -randomdigit,fpconv,6,228.600000 -randomdigit,fpconv,7,238.100000 -randomdigit,fpconv,8,245.300000 -randomdigit,fpconv,9,243.600000 -randomdigit,fpconv,10,247.800000 -randomdigit,fpconv,11,252.400000 -randomdigit,fpconv,12,255.800000 -randomdigit,fpconv,13,258.100000 -randomdigit,fpconv,14,263.000000 -randomdigit,fpconv,15,264.700000 -randomdigit,fpconv,16,282.400000 -randomdigit,fpconv,17,276.600000 -randomdigit,grisu2,1,195.200000 -randomdigit,grisu2,2,209.900000 -randomdigit,grisu2,3,215.900000 -randomdigit,grisu2,4,218.700000 -randomdigit,grisu2,5,222.400000 -randomdigit,grisu2,6,230.500000 -randomdigit,grisu2,7,251.400000 -randomdigit,grisu2,8,252.300000 -randomdigit,grisu2,9,246.300000 -randomdigit,grisu2,10,253.200000 -randomdigit,grisu2,11,256.600000 -randomdigit,grisu2,12,258.600000 -randomdigit,grisu2,13,265.300000 -randomdigit,grisu2,14,270.500000 -randomdigit,grisu2,15,275.500000 -randomdigit,grisu2,16,278.100000 -randomdigit,grisu2,17,289.400000 -randomdigit,milo,1,64.700000 -randomdigit,milo,2,74.000000 -randomdigit,milo,3,82.700000 -randomdigit,milo,4,87.200000 -randomdigit,milo,5,92.900000 -randomdigit,milo,6,100.600000 -randomdigit,milo,7,106.400000 -randomdigit,milo,8,112.900000 -randomdigit,milo,9,116.500000 -randomdigit,milo,10,122.000000 -randomdigit,milo,11,124.900000 -randomdigit,milo,12,130.400000 -randomdigit,milo,13,133.200000 -randomdigit,milo,14,138.200000 -randomdigit,milo,15,141.200000 -randomdigit,milo,16,147.500000 -randomdigit,milo,17,151.600000 -randomdigit,null,1,2.400000 -randomdigit,null,2,2.500000 -randomdigit,null,3,2.500000 -randomdigit,null,4,2.500000 -randomdigit,null,5,2.500000 -randomdigit,null,6,2.500000 -randomdigit,null,7,2.400000 -randomdigit,null,8,2.400000 -randomdigit,null,9,2.500000 -randomdigit,null,10,2.500000 -randomdigit,null,11,2.400000 -randomdigit,null,12,2.500000 -randomdigit,null,13,2.400000 -randomdigit,null,14,2.500000 -randomdigit,null,15,2.400000 -randomdigit,null,16,2.500000 -randomdigit,null,17,2.500000 -randomdigit,ostringstream,1,27762.600000 -randomdigit,ostringstream,2,27869.100000 -randomdigit,ostringstream,3,28370.700000 -randomdigit,ostringstream,4,28167.200000 -randomdigit,ostringstream,5,28682.300000 -randomdigit,ostringstream,6,28907.800000 -randomdigit,ostringstream,7,28837.400000 -randomdigit,ostringstream,8,29257.000000 -randomdigit,ostringstream,9,29114.900000 -randomdigit,ostringstream,10,29542.300000 -randomdigit,ostringstream,11,29575.900000 -randomdigit,ostringstream,12,29871.900000 -randomdigit,ostringstream,13,30168.700000 -randomdigit,ostringstream,14,30028.000000 -randomdigit,ostringstream,15,30322.700000 -randomdigit,ostringstream,16,30295.900000 -randomdigit,ostringstream,17,30310.000000 -randomdigit,ostrstream,1,27134.400000 -randomdigit,ostrstream,2,27252.700000 -randomdigit,ostrstream,3,27842.000000 -randomdigit,ostrstream,4,27587.600000 -randomdigit,ostrstream,5,28130.800000 -randomdigit,ostrstream,6,28373.200000 -randomdigit,ostrstream,7,28340.500000 -randomdigit,ostrstream,8,28672.400000 -randomdigit,ostrstream,9,28608.100000 -randomdigit,ostrstream,10,29019.600000 -randomdigit,ostrstream,11,29031.700000 -randomdigit,ostrstream,12,29316.600000 -randomdigit,ostrstream,13,29577.100000 -randomdigit,ostrstream,14,29442.700000 -randomdigit,ostrstream,15,29683.300000 -randomdigit,ostrstream,16,29698.500000 -randomdigit,ostrstream,17,29686.500000 -randomdigit,sprintf,1,26098.700000 -randomdigit,sprintf,2,26255.500000 -randomdigit,sprintf,3,26778.900000 -randomdigit,sprintf,4,26585.600000 -randomdigit,sprintf,5,27087.700000 -randomdigit,sprintf,6,27329.800000 -randomdigit,sprintf,7,27276.300000 -randomdigit,sprintf,8,27654.700000 -randomdigit,sprintf,9,27609.800000 -randomdigit,sprintf,10,28000.700000 -randomdigit,sprintf,11,28049.400000 -randomdigit,sprintf,12,28279.400000 -randomdigit,sprintf,13,29267.000000 -randomdigit,sprintf,14,28797.600000 -randomdigit,sprintf,15,29197.700000 -randomdigit,sprintf,16,29212.100000 -randomdigit,sprintf,17,29144.300000 diff --git a/result/corei7920@2.67_cygwin64_gcc4.8.html b/result/corei7920@2.67_cygwin64_gcc4.8.html deleted file mode 100644 index 1b32eaf..0000000 --- a/result/corei7920@2.67_cygwin64_gcc4.8.html +++ /dev/null @@ -1,485 +0,0 @@ - - - - - - - - - - - - -
- - -
-

Source CSV

- -
- -
- - - - -
- - - \ No newline at end of file diff --git a/result/corei7920@2.67_win32_vc2013.csv b/result/corei7920@2.67_win32_vc2013.csv deleted file mode 100644 index f38978b..0000000 --- a/result/corei7920@2.67_win32_vc2013.csv +++ /dev/null @@ -1,154 +0,0 @@ -doubleype,Function,Digit,doubleime(ms) -randomdigit,doubleconv,1,296.024842 -randomdigit,doubleconv,2,320.759669 -randomdigit,doubleconv,3,326.475958 -randomdigit,doubleconv,4,345.670735 -randomdigit,doubleconv,5,359.053441 -randomdigit,doubleconv,6,386.064055 -randomdigit,doubleconv,7,389.221041 -randomdigit,doubleconv,8,409.749108 -randomdigit,doubleconv,9,415.794888 -randomdigit,doubleconv,10,435.614166 -randomdigit,doubleconv,11,427.281104 -randomdigit,doubleconv,12,458.111517 -randomdigit,doubleconv,13,453.544616 -randomdigit,doubleconv,14,486.930502 -randomdigit,doubleconv,15,481.999628 -randomdigit,doubleconv,16,499.520131 -randomdigit,doubleconv,17,518.753221 -randomdigit,fpconv,1,321.077666 -randomdigit,fpconv,2,340.850968 -randomdigit,fpconv,3,380.351598 -randomdigit,fpconv,4,405.488710 -randomdigit,fpconv,5,427.679558 -randomdigit,fpconv,6,445.131097 -randomdigit,fpconv,7,459.716829 -randomdigit,fpconv,8,474.930893 -randomdigit,fpconv,9,485.329022 -randomdigit,fpconv,10,495.497273 -randomdigit,fpconv,11,505.899233 -randomdigit,fpconv,12,516.408469 -randomdigit,fpconv,13,527.358304 -randomdigit,fpconv,14,537.411617 -randomdigit,fpconv,15,546.009038 -randomdigit,fpconv,16,554.583471 -randomdigit,fpconv,17,570.038907 -randomdigit,gay,1,866.239988 -randomdigit,gay,2,1109.205256 -randomdigit,gay,3,1401.670827 -randomdigit,gay,4,1671.842105 -randomdigit,gay,5,1949.369465 -randomdigit,gay,6,2216.502528 -randomdigit,gay,7,2483.762023 -randomdigit,gay,8,2753.373932 -randomdigit,gay,9,3015.323256 -randomdigit,gay,10,3263.250047 -randomdigit,gay,11,3635.092344 -randomdigit,gay,12,3997.210819 -randomdigit,gay,13,4271.393460 -randomdigit,gay,14,4498.964593 -randomdigit,gay,15,4761.189770 -randomdigit,gay,16,5046.563618 -randomdigit,gay,17,5162.674779 -randomdigit,grisu2,1,270.891561 -randomdigit,grisu2,2,296.672331 -randomdigit,grisu2,3,317.024158 -randomdigit,grisu2,4,324.288289 -randomdigit,grisu2,5,340.264781 -randomdigit,grisu2,6,354.490371 -randomdigit,grisu2,7,367.670018 -randomdigit,grisu2,8,377.796125 -randomdigit,grisu2,9,392.240099 -randomdigit,grisu2,10,401.324095 -randomdigit,grisu2,11,408.457962 -randomdigit,grisu2,12,424.120287 -randomdigit,grisu2,13,431.208179 -randomdigit,grisu2,14,442.096713 -randomdigit,grisu2,15,452.410554 -randomdigit,grisu2,16,465.502081 -randomdigit,grisu2,17,485.106807 -randomdigit,milo,1,181.982579 -randomdigit,milo,2,200.142907 -randomdigit,milo,3,219.487105 -randomdigit,milo,4,232.069071 -randomdigit,milo,5,251.026308 -randomdigit,milo,6,263.278782 -randomdigit,milo,7,276.328166 -randomdigit,milo,8,287.580673 -randomdigit,milo,9,297.932826 -randomdigit,milo,10,306.422971 -randomdigit,milo,11,314.652588 -randomdigit,milo,12,324.525830 -randomdigit,milo,13,332.947011 -randomdigit,milo,14,339.931458 -randomdigit,milo,15,348.482904 -randomdigit,milo,16,356.731677 -randomdigit,milo,17,364.141398 -randomdigit,null,1,2.498003 -randomdigit,null,2,2.498003 -randomdigit,null,3,2.498003 -randomdigit,null,4,2.498003 -randomdigit,null,5,2.498003 -randomdigit,null,6,2.498003 -randomdigit,null,7,2.498003 -randomdigit,null,8,2.498003 -randomdigit,null,9,2.498003 -randomdigit,null,10,2.498003 -randomdigit,null,11,2.498003 -randomdigit,null,12,2.498003 -randomdigit,null,13,2.498003 -randomdigit,null,14,2.498003 -randomdigit,null,15,2.498003 -randomdigit,null,16,2.498003 -randomdigit,null,17,2.498003 -randomdigit,ostringstream,1,2874.415967 -randomdigit,ostringstream,2,2877.975238 -randomdigit,ostringstream,3,2895.043648 -randomdigit,ostringstream,4,2899.832764 -randomdigit,ostringstream,5,2917.046763 -randomdigit,ostringstream,6,2930.402650 -randomdigit,ostringstream,7,2937.570999 -randomdigit,ostringstream,8,2932.444729 -randomdigit,ostringstream,9,2948.459533 -randomdigit,ostringstream,10,2980.408684 -randomdigit,ostringstream,11,2984.956429 -randomdigit,ostringstream,12,2994.316277 -randomdigit,ostringstream,13,2995.695542 -randomdigit,ostringstream,14,3006.335043 -randomdigit,ostringstream,15,3022.234908 -randomdigit,ostringstream,16,3010.085878 -randomdigit,ostringstream,17,3004.423228 -randomdigit,ostrstream,1,2703.996230 -randomdigit,ostrstream,2,2703.314260 -randomdigit,ostrstream,3,2715.160617 -randomdigit,ostrstream,4,2722.424749 -randomdigit,ostrstream,5,2732.987623 -randomdigit,ostrstream,6,2736.516244 -randomdigit,ostrstream,7,2747.826220 -randomdigit,ostrstream,8,2753.228343 -randomdigit,ostrstream,9,2764.385068 -randomdigit,ostrstream,10,2787.012683 -randomdigit,ostrstream,11,2792.916706 -randomdigit,ostrstream,12,2789.123726 -randomdigit,ostrstream,13,2797.606208 -randomdigit,ostrstream,14,2813.061644 -randomdigit,ostrstream,15,2817.007875 -randomdigit,ostrstream,16,2819.620817 -randomdigit,ostrstream,17,2803.606013 -randomdigit,sprintf,1,1293.486611 -randomdigit,sprintf,2,1284.831720 -randomdigit,sprintf,3,1301.248810 -randomdigit,sprintf,4,1307.076206 -randomdigit,sprintf,5,1313.462972 -randomdigit,sprintf,6,1319.688822 -randomdigit,sprintf,7,1342.557809 -randomdigit,sprintf,8,1357.254649 -randomdigit,sprintf,9,1361.825381 -randomdigit,sprintf,10,1352.170523 -randomdigit,sprintf,11,1358.978731 -randomdigit,sprintf,12,1354.496118 -randomdigit,sprintf,13,1364.361697 -randomdigit,sprintf,14,1369.714013 -randomdigit,sprintf,15,1362.342606 -randomdigit,sprintf,16,1373.514656 -randomdigit,sprintf,17,1337.446865 diff --git a/result/corei7920@2.67_win64_vc2013.csv b/result/corei7920@2.67_win64_vc2013.csv deleted file mode 100644 index 0b3937f..0000000 --- a/result/corei7920@2.67_win64_vc2013.csv +++ /dev/null @@ -1,154 +0,0 @@ -doubleype,Function,Digit,doubleime(ms) -randomdigit,doubleconv,1,150.037259 -randomdigit,doubleconv,2,165.439057 -randomdigit,doubleconv,3,170.477207 -randomdigit,doubleconv,4,180.158884 -randomdigit,doubleconv,5,185.319635 -randomdigit,doubleconv,6,194.928518 -randomdigit,doubleconv,7,192.384539 -randomdigit,doubleconv,8,202.123686 -randomdigit,doubleconv,9,200.759745 -randomdigit,doubleconv,10,209.280541 -randomdigit,doubleconv,11,205.725101 -randomdigit,doubleconv,12,220.851045 -randomdigit,doubleconv,13,215.713281 -randomdigit,doubleconv,14,231.283656 -randomdigit,doubleconv,15,224.509930 -randomdigit,doubleconv,16,232.858317 -randomdigit,doubleconv,17,246.106928 -randomdigit,fpconv,1,194.510907 -randomdigit,fpconv,2,216.548503 -randomdigit,fpconv,3,232.636102 -randomdigit,fpconv,4,246.907668 -randomdigit,fpconv,5,257.179364 -randomdigit,fpconv,6,266.205890 -randomdigit,fpconv,7,272.964290 -randomdigit,fpconv,8,281.071306 -randomdigit,fpconv,9,283.488852 -randomdigit,fpconv,10,288.707073 -randomdigit,fpconv,11,292.277838 -randomdigit,fpconv,12,294.883117 -randomdigit,fpconv,13,297.480733 -randomdigit,fpconv,14,300.300565 -randomdigit,fpconv,15,302.859869 -randomdigit,fpconv,16,308.982275 -randomdigit,fpconv,17,317.966656 -randomdigit,gay,1,612.650546 -randomdigit,gay,2,740.995025 -randomdigit,gay,3,881.258656 -randomdigit,gay,4,1005.266112 -randomdigit,gay,5,1125.633840 -randomdigit,gay,6,1248.258198 -randomdigit,gay,7,1368.300266 -randomdigit,gay,8,1495.185023 -randomdigit,gay,9,1616.928184 -randomdigit,gay,10,1739.502737 -randomdigit,gay,11,1915.148357 -randomdigit,gay,12,2076.472605 -randomdigit,gay,13,2196.399734 -randomdigit,gay,14,2312.966819 -randomdigit,gay,15,2432.445687 -randomdigit,gay,16,2576.004230 -randomdigit,gay,17,2643.852595 -randomdigit,grisu2,1,177.055537 -randomdigit,grisu2,2,188.702667 -randomdigit,grisu2,3,198.330706 -randomdigit,grisu2,4,200.955141 -randomdigit,grisu2,5,201.947446 -randomdigit,grisu2,6,207.223136 -randomdigit,grisu2,7,210.705782 -randomdigit,grisu2,8,217.678735 -randomdigit,grisu2,9,220.004329 -randomdigit,grisu2,10,226.919813 -randomdigit,grisu2,11,227.804842 -randomdigit,grisu2,12,234.996178 -randomdigit,grisu2,13,236.038290 -randomdigit,grisu2,14,241.130078 -randomdigit,grisu2,15,245.294693 -randomdigit,grisu2,16,248.627918 -randomdigit,grisu2,17,260.845911 -randomdigit,milo,1,92.905020 -randomdigit,milo,2,106.590398 -randomdigit,milo,3,117.214573 -randomdigit,milo,4,122.923200 -randomdigit,milo,5,125.306264 -randomdigit,milo,6,131.543609 -randomdigit,milo,7,134.639293 -randomdigit,milo,8,139.899658 -randomdigit,milo,9,143.160089 -randomdigit,milo,10,144.960796 -randomdigit,milo,11,147.033526 -randomdigit,milo,12,150.937613 -randomdigit,milo,13,152.949042 -randomdigit,milo,14,154.864688 -randomdigit,milo,15,155.807186 -randomdigit,milo,16,160.328112 -randomdigit,milo,17,165.297299 -randomdigit,null,1,2.145524 -randomdigit,null,2,2.145524 -randomdigit,null,3,2.145524 -randomdigit,null,4,2.145524 -randomdigit,null,5,2.145524 -randomdigit,null,6,2.145524 -randomdigit,null,7,2.145524 -randomdigit,null,8,2.145524 -randomdigit,null,9,2.145524 -randomdigit,null,10,2.145524 -randomdigit,null,11,2.145524 -randomdigit,null,12,2.145524 -randomdigit,null,13,2.145524 -randomdigit,null,14,2.145524 -randomdigit,null,15,2.145524 -randomdigit,null,16,2.145524 -randomdigit,null,17,2.145524 -randomdigit,ostringstream,1,2725.930382 -randomdigit,ostringstream,2,2733.416728 -randomdigit,ostringstream,3,2728.409228 -randomdigit,ostringstream,4,2738.684755 -randomdigit,ostringstream,5,2756.170776 -randomdigit,ostringstream,6,2751.672838 -randomdigit,ostringstream,7,2759.473350 -randomdigit,ostringstream,8,2757.599848 -randomdigit,ostringstream,9,2774.492018 -randomdigit,ostringstream,10,2793.728940 -randomdigit,ostringstream,11,2795.288276 -randomdigit,ostringstream,12,2806.920081 -randomdigit,ostringstream,13,2811.483151 -randomdigit,ostringstream,14,2819.456071 -randomdigit,ostringstream,15,2833.440290 -randomdigit,ostringstream,16,2834.524546 -randomdigit,ostringstream,17,2818.023168 -randomdigit,ostrstream,1,2578.214886 -randomdigit,ostrstream,2,2574.460219 -randomdigit,ostrstream,3,2594.202871 -randomdigit,ostrstream,4,2595.118550 -randomdigit,ostrstream,5,2610.696587 -randomdigit,ostrstream,6,2609.987797 -randomdigit,ostrstream,7,2619.228876 -randomdigit,ostrstream,8,2612.646715 -randomdigit,ostrstream,9,2626.473850 -randomdigit,ostrstream,10,2642.496317 -randomdigit,ostrstream,11,2641.829672 -randomdigit,ostrstream,12,2651.300628 -randomdigit,ostrstream,13,2654.948019 -randomdigit,ostrstream,14,2652.856133 -randomdigit,ostrstream,15,2683.096528 -randomdigit,ostrstream,16,2670.326828 -randomdigit,ostrstream,17,2664.323193 -randomdigit,sprintf,1,1224.186186 -randomdigit,sprintf,2,1225.856629 -randomdigit,sprintf,3,1240.132026 -randomdigit,sprintf,4,1236.618731 -randomdigit,sprintf,5,1252.874906 -randomdigit,sprintf,6,1250.668082 -randomdigit,sprintf,7,1253.177579 -randomdigit,sprintf,8,1251.855782 -randomdigit,sprintf,9,1255.909290 -randomdigit,sprintf,10,1254.733083 -randomdigit,sprintf,11,1253.690972 -randomdigit,sprintf,12,1256.392033 -randomdigit,sprintf,13,1261.801819 -randomdigit,sprintf,14,1258.277029 -randomdigit,sprintf,15,1267.311218 -randomdigit,sprintf,16,1313.436152 -randomdigit,sprintf,17,1301.463362 diff --git a/result/corei7920@2.67_win64_vc2013.html b/result/corei7920@2.67_win64_vc2013.html deleted file mode 100644 index 3fca6cf..0000000 --- a/result/corei7920@2.67_win64_vc2013.html +++ /dev/null @@ -1,502 +0,0 @@ - - - - - - - - - - - - -
- - -
-

Source CSV

- -
- -
- - - - -
- - - \ No newline at end of file diff --git a/result/corei7920@2.67_win64_vc2013_randomdigit_time.png b/result/corei7920@2.67_win64_vc2013_randomdigit_time.png deleted file mode 100644 index 8bc9c76b455e585927518383c43b93d22d50bb61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17218 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 SJA31uMUZkiupB)?wQs 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 diff --git a/result/randomdigit_i7-4600U@2.10_linux-x86_64-gcc8.3.csv b/result/randomdigit_i7-4600U@2.10_linux-x86_64-gcc8.3.csv new file mode 100644 index 0000000..c348911 --- /dev/null +++ b/result/randomdigit_i7-4600U@2.10_linux-x86_64-gcc8.3.csv @@ -0,0 +1,171 @@ +Type,Function,Digit,Time(ns) +randomdigit,doubleconv,1,78.700000 +randomdigit,doubleconv,2,91.500000 +randomdigit,doubleconv,3,95.500000 +randomdigit,doubleconv,4,102.700000 +randomdigit,doubleconv,5,108.700000 +randomdigit,doubleconv,6,115.900000 +randomdigit,doubleconv,7,120.100000 +randomdigit,doubleconv,8,119.200000 +randomdigit,doubleconv,9,123.000000 +randomdigit,doubleconv,10,123.700000 +randomdigit,doubleconv,11,126.700000 +randomdigit,doubleconv,12,126.000000 +randomdigit,doubleconv,13,132.900000 +randomdigit,doubleconv,14,135.400000 +randomdigit,doubleconv,15,135.300000 +randomdigit,doubleconv,16,135.000000 +randomdigit,doubleconv,17,150.700000 +randomdigit,emyg,1,42.200000 +randomdigit,emyg,2,49.800000 +randomdigit,emyg,3,53.800000 +randomdigit,emyg,4,56.100000 +randomdigit,emyg,5,59.400000 +randomdigit,emyg,6,61.100000 +randomdigit,emyg,7,62.700000 +randomdigit,emyg,8,63.900000 +randomdigit,emyg,9,66.000000 +randomdigit,emyg,10,66.300000 +randomdigit,emyg,11,68.300000 +randomdigit,emyg,12,69.000000 +randomdigit,emyg,13,69.600000 +randomdigit,emyg,14,71.400000 +randomdigit,emyg,15,72.100000 +randomdigit,emyg,16,73.500000 +randomdigit,emyg,17,77.800000 +randomdigit,erthink,1,25.900000 +randomdigit,erthink,2,28.300000 +randomdigit,erthink,3,31.400000 +randomdigit,erthink,4,34.800000 +randomdigit,erthink,5,37.900000 +randomdigit,erthink,6,41.100000 +randomdigit,erthink,7,43.600000 +randomdigit,erthink,8,44.800000 +randomdigit,erthink,9,46.800000 +randomdigit,erthink,10,48.300000 +randomdigit,erthink,11,49.600000 +randomdigit,erthink,12,51.200000 +randomdigit,erthink,13,52.100000 +randomdigit,erthink,14,53.600000 +randomdigit,erthink,15,54.900000 +randomdigit,erthink,16,57.000000 +randomdigit,erthink,17,62.800000 +randomdigit,floaxie,1,27.400000 +randomdigit,floaxie,2,33.400000 +randomdigit,floaxie,3,38.100000 +randomdigit,floaxie,4,43.700000 +randomdigit,floaxie,5,49.600000 +randomdigit,floaxie,6,55.900000 +randomdigit,floaxie,7,63.600000 +randomdigit,floaxie,8,71.000000 +randomdigit,floaxie,9,77.600000 +randomdigit,floaxie,10,80.600000 +randomdigit,floaxie,11,83.300000 +randomdigit,floaxie,12,86.700000 +randomdigit,floaxie,13,89.600000 +randomdigit,floaxie,14,91.300000 +randomdigit,floaxie,15,94.300000 +randomdigit,floaxie,16,96.700000 +randomdigit,floaxie,17,98.200000 +randomdigit,fmt,1,97.300000 +randomdigit,fmt,2,106.200000 +randomdigit,fmt,3,109.800000 +randomdigit,fmt,4,113.500000 +randomdigit,fmt,5,115.100000 +randomdigit,fmt,6,118.300000 +randomdigit,fmt,7,122.300000 +randomdigit,fmt,8,124.700000 +randomdigit,fmt,9,127.000000 +randomdigit,fmt,10,129.700000 +randomdigit,fmt,11,131.500000 +randomdigit,fmt,12,133.900000 +randomdigit,fmt,13,136.000000 +randomdigit,fmt,14,138.700000 +randomdigit,fmt,15,140.300000 +randomdigit,fmt,16,141.800000 +randomdigit,fmt,17,151.500000 +randomdigit,fpconv,1,107.100000 +randomdigit,fpconv,2,119.400000 +randomdigit,fpconv,3,129.700000 +randomdigit,fpconv,4,136.800000 +randomdigit,fpconv,5,144.000000 +randomdigit,fpconv,6,149.800000 +randomdigit,fpconv,7,154.400000 +randomdigit,fpconv,8,157.500000 +randomdigit,fpconv,9,160.400000 +randomdigit,fpconv,10,161.900000 +randomdigit,fpconv,11,163.600000 +randomdigit,fpconv,12,165.500000 +randomdigit,fpconv,13,167.600000 +randomdigit,fpconv,14,170.800000 +randomdigit,fpconv,15,171.300000 +randomdigit,fpconv,16,173.100000 +randomdigit,fpconv,17,178.600000 +randomdigit,grisu2,1,73.400000 +randomdigit,grisu2,2,75.200000 +randomdigit,grisu2,3,78.400000 +randomdigit,grisu2,4,80.600000 +randomdigit,grisu2,5,82.800000 +randomdigit,grisu2,6,84.300000 +randomdigit,grisu2,7,86.000000 +randomdigit,grisu2,8,88.100000 +randomdigit,grisu2,9,89.800000 +randomdigit,grisu2,10,91.700000 +randomdigit,grisu2,11,93.800000 +randomdigit,grisu2,12,95.700000 +randomdigit,grisu2,13,98.200000 +randomdigit,grisu2,14,99.500000 +randomdigit,grisu2,15,101.600000 +randomdigit,grisu2,16,103.600000 +randomdigit,grisu2,17,109.300000 +randomdigit,milo,1,42.700000 +randomdigit,milo,2,49.600000 +randomdigit,milo,3,53.400000 +randomdigit,milo,4,56.000000 +randomdigit,milo,5,59.100000 +randomdigit,milo,6,60.700000 +randomdigit,milo,7,62.600000 +randomdigit,milo,8,64.100000 +randomdigit,milo,9,65.800000 +randomdigit,milo,10,66.800000 +randomdigit,milo,11,68.200000 +randomdigit,milo,12,69.000000 +randomdigit,milo,13,69.600000 +randomdigit,milo,14,71.800000 +randomdigit,milo,15,71.800000 +randomdigit,milo,16,73.700000 +randomdigit,milo,17,78.100000 +randomdigit,ryu,1,69.500000 +randomdigit,ryu,2,70.100000 +randomdigit,ryu,3,67.700000 +randomdigit,ryu,4,65.700000 +randomdigit,ryu,5,65.600000 +randomdigit,ryu,6,64.700000 +randomdigit,ryu,7,63.100000 +randomdigit,ryu,8,61.600000 +randomdigit,ryu,9,60.100000 +randomdigit,ryu,10,60.300000 +randomdigit,ryu,11,57.200000 +randomdigit,ryu,12,54.400000 +randomdigit,ryu,13,53.600000 +randomdigit,ryu,14,50.800000 +randomdigit,ryu,15,50.500000 +randomdigit,ryu,16,48.000000 +randomdigit,ryu,17,47.100000 +randomdigit,sprintf,1,826.000000 +randomdigit,sprintf,2,837.400000 +randomdigit,sprintf,3,845.300000 +randomdigit,sprintf,4,853.900000 +randomdigit,sprintf,5,858.900000 +randomdigit,sprintf,6,876.400000 +randomdigit,sprintf,7,896.200000 +randomdigit,sprintf,8,896.400000 +randomdigit,sprintf,9,905.300000 +randomdigit,sprintf,10,916.200000 +randomdigit,sprintf,11,933.200000 +randomdigit,sprintf,12,935.100000 +randomdigit,sprintf,13,949.700000 +randomdigit,sprintf,14,953.900000 +randomdigit,sprintf,15,968.100000 +randomdigit,sprintf,16,942.800000 +randomdigit,sprintf,17,958.400000 diff --git a/result/unknown_mac64_clang10.0.html b/result/randomdigit_i7-4600U@2.10_linux-x86_64-gcc8.3.html similarity index 62% rename from result/unknown_mac64_clang10.0.html rename to result/randomdigit_i7-4600U@2.10_linux-x86_64-gcc8.3.html index 2c76e5d..427a4b2 100644 --- a/result/unknown_mac64_clang10.0.html +++ b/result/randomdigit_i7-4600U@2.10_linux-x86_64-gcc8.3.html @@ -1,11 +1,11 @@ - - + + - - - + + + - - - - - + + + + + + - - - - - + + + + + + - + + - - - + + + - - - - - - - - - -
- - -
-

Source CSV

- -
- -
- - - - -
- - - \ No newline at end of file