joelverhagen / NCsvPerf

A test bench for various .NET CSV parsing libraries
https://www.joelverhagen.com/blog/2020/12/fastest-net-csv-parsers
MIT License
69 stars 14 forks source link

Consider adding a server GC test #9

Closed joelverhagen closed 8 months ago

joelverhagen commented 3 years ago

See https://github.com/joelverhagen/NCsvPerf/pull/7#issuecomment-761833022. /cc @airbreather

joelverhagen commented 8 months ago

The results change a lot. I'll include the ranking and timings of the top 10 using server GC.

Server GC

Method LineCount Mean Error StdDev Gen0 Gen1 Gen2 Allocated
Sep_MT 1000000 171.2 ms 3.70 ms 0.96 ms 90.9091 - - 261.52 MB
RecordParserParallel 1000000 381.5 ms 67.95 ms 17.65 ms - - - 280.05 MB
Sep 1000000 655.6 ms 38.42 ms 9.98 ms - - - 260.42 MB
Sylvan_Data_Csv 1000000 754.7 ms 57.54 ms 14.94 ms - - - 260.6 MB
SoftCircuits_CsvParser 1000000 821.3 ms 20.14 ms 3.12 ms 500.0000 - - 1173.42 MB
Microsoft_ML 1000000 987.8 ms 724.04 ms 188.03 ms 500.0000 - - 1794.83 MB
string_Split 1000000 1,039.8 ms 646.34 ms 167.85 ms 500.0000 - - 2074.87 MB
Cursively 1000000 1,063.4 ms 117.01 ms 30.39 ms 500.0000 - - 344.64 MB
TxtCsvHelper 1000000 1,097.9 ms 46.89 ms 12.18 ms 1000.0000 - - 2349.53 MB
FluentCSV 1000000 1,172.2 ms 686.71 ms 178.34 ms 500.0000 - - 2074.87 MB
RecordParser 1000000 1,181.1 ms 128.73 ms 33.43 ms 500.0000 - - 260.65 MB
HomeGrown2 1000000 1,275.1 ms 115.70 ms 30.05 ms - - - 260.62 MB
Sky_Data_Csv 1000000 1,435.1 ms 30.76 ms 7.99 ms 1000.0000 - - 2304.09 MB
NReco_Csv 1000000 1,442.3 ms 14.32 ms 2.22 ms - - - 1174.13 MB
Ctl_Data 1000000 1,442.7 ms 52.37 ms 13.60 ms 1000.0000 - - 2385.38 MB
HomeGrown 1000000 1,447.3 ms 37.98 ms 9.86 ms - - - 1173.41 MB
mgholam_fastCSV 1000000 1,553.6 ms 25.62 ms 3.96 ms - - - 1260.91 MB
Dsv 1000000 1,582.0 ms 63.58 ms 9.84 ms 1000.0000 - - 2082.5 MB
ServiceStack_Text 1000000 1,639.5 ms 52.44 ms 8.12 ms 1000.0000 - - 2441.08 MB
GenericParsing 1000000 1,698.4 ms 75.69 ms 11.71 ms - - - 1173.41 MB
KBCsv 1000000 1,802.6 ms 60.63 ms 15.75 ms 1000.0000 - - 1501.49 MB
CSVFile 1000000 1,810.6 ms 65.20 ms 16.93 ms 1000.0000 - - 2713.14 MB
FastCsvParser 1000000 1,824.2 ms 107.01 ms 27.79 ms 1000.0000 - - 2055.36 MB
FileHelpers 1000000 1,891.6 ms 80.65 ms 20.94 ms 1000.0000 - - 2105.43 MB
CsvHelper 1000000 1,953.0 ms 45.65 ms 7.06 ms - - - 260.58 MB
CsvTextFieldParser 1000000 2,392.8 ms 808.32 ms 209.92 ms 1000.0000 - - 4133.4 MB
LumenWorksCsvReader 1000000 2,830.0 ms 204.63 ms 53.14 ms 1000.0000 - - 5234.74 MB
TinyCsvReader 1000000 3,182.8 ms 54.05 ms 14.04 ms 2000.0000 1000.0000 - 6251.46 MB
LinqToCsv 1000000 3,192.7 ms 160.73 ms 41.74 ms 2000.0000 1000.0000 - 5635.27 MB
Cesil 1000000 3,424.1 ms 222.77 ms 57.85 ms - - - 914.48 MB
CsvTools 1000000 3,654.0 ms 71.18 ms 11.02 ms 1000.0000 - - 2073.7 MB
Open_Text_CSV 1000000 3,743.4 ms 40.91 ms 6.33 ms 1000.0000 - - 1539.69 MB
FlatFiles 1000000 5,166.4 ms 649.61 ms 168.70 ms 2000.0000 1000.0000 - 4200.88 MB
StackOverflowRegex 1000000 5,246.2 ms 215.96 ms 56.08 ms 1000.0000 - - 4704.41 MB
Angara_Table 1000000 5,762.8 ms 1,691.33 ms 439.23 ms 1000.0000 - - 4027.34 MB
Csv 1000000 6,276.5 ms 90.99 ms 23.63 ms 2000.0000 1000.0000 - 9537.62 MB
Microsoft_Data_Analysis 1000000 9,073.4 ms 375.19 ms 97.44 ms 3000.0000 1000.0000 - 13310.61 MB
Microsoft_VisualBasic_FileIO_TextFieldParser 1000000 15,658.4 ms 108.81 ms 16.84 ms 136000.0000 37000.0000 6000.0000 40104.72 MB
CommonLibrary_NET 1000000 15,794.5 ms 3,121.58 ms 810.67 ms 4000.0000 2000.0000 1000.0000 14799.59 MB
ChoETL 1000000 16,610.2 ms 190.04 ms 29.41 ms 2000.0000 1000.0000 - 6658 MB

Workstation GC

Method LineCount Mean Error StdDev Gen0 Gen1 Gen2 Allocated
Sep_MT 1000000 466.5 ms 87.65 ms 13.56 ms 31500.0000 31250.0000 250.0000 261.67 MB
RecordParserParallel 1000000 821.6 ms 47.39 ms 7.33 ms 38000.0000 37500.0000 4500.0000 280.45 MB
Sep 1000000 1,030.8 ms 32.34 ms 5.00 ms 34000.0000 33500.0000 3500.0000 260.43 MB
Sylvan_Data_Csv 1000000 1,087.7 ms 21.50 ms 5.58 ms 34000.0000 33500.0000 3500.0000 260.61 MB
RecordParser 1000000 1,521.0 ms 48.27 ms 12.53 ms 34000.0000 33000.0000 4000.0000 260.67 MB
HomeGrown2 1000000 1,559.6 ms 33.12 ms 8.60 ms 34000.0000 33000.0000 4000.0000 260.63 MB
Cursively 1000000 1,608.8 ms 75.40 ms 11.67 ms 45000.0000 24000.0000 4000.0000 344.65 MB
CsvHelper 1000000 2,243.1 ms 36.67 ms 5.67 ms 34000.0000 33000.0000 4000.0000 260.59 MB
SoftCircuits_CsvParser 1000000 2,677.2 ms 131.28 ms 20.32 ms 152000.0000 151000.0000 7000.0000 1173.45 MB
string_Split 1000000 2,812.5 ms 47.89 ms 7.41 ms 265000.0000 136000.0000 7000.0000 2074.92 MB
TxtCsvHelper 1000000 2,946.1 ms 19.73 ms 1.08 ms 299000.0000 153000.0000 7000.0000 2349.59 MB
FluentCSV 1000000 2,957.7 ms 37.33 ms 5.78 ms 265000.0000 136000.0000 7000.0000 2074.92 MB
NReco_Csv 1000000 3,143.2 ms 184.75 ms 47.98 ms 152000.0000 151000.0000 7000.0000 1174.17 MB
HomeGrown 1000000 3,149.6 ms 15.76 ms 2.44 ms 152000.0000 151000.0000 7000.0000 1173.44 MB
mgholam_fastCSV 1000000 3,245.6 ms 114.23 ms 29.66 ms 161000.0000 83000.0000 6000.0000 1260.91 MB
GenericParsing 1000000 3,337.6 ms 81.33 ms 21.12 ms 152000.0000 151000.0000 7000.0000 1173.45 MB
KBCsv 1000000 3,430.1 ms 132.94 ms 34.52 ms 192000.0000 99000.0000 6000.0000 1501.53 MB
Dsv 1000000 3,480.1 ms 94.68 ms 14.65 ms 266000.0000 136000.0000 7000.0000 2082.56 MB
Sky_Data_Csv 1000000 3,502.9 ms 288.32 ms 74.88 ms 294000.0000 150000.0000 7000.0000 2304.15 MB
ServiceStack_Text 1000000 3,570.4 ms 28.98 ms 4.48 ms 310000.0000 107000.0000 6000.0000 2441.14 MB
CSVFile 1000000 3,770.8 ms 96.75 ms 25.12 ms 344000.0000 119000.0000 6000.0000 2713.21 MB
Microsoft_ML 1000000 3,812.4 ms 113.52 ms 17.57 ms 243000.0000 242000.0000 10000.0000 1796.91 MB
FastCsvParser 1000000 3,975.3 ms 91.39 ms 23.73 ms 262000.0000 134000.0000 7000.0000 2055.41 MB
FileHelpers 1000000 3,996.7 ms 91.61 ms 23.79 ms 269000.0000 138000.0000 7000.0000 2105.49 MB
CsvTextFieldParser 1000000 4,080.2 ms 181.05 ms 47.02 ms 523000.0000 178000.0000 7000.0000 4133.5 MB
Ctl_Data 1000000 4,191.8 ms 155.86 ms 40.48 ms 304000.0000 153000.0000 7000.0000 2385.44 MB
Cesil 1000000 4,557.5 ms 177.78 ms 27.51 ms 118000.0000 117000.0000 6000.0000 914.49 MB
Open_Text_CSV 1000000 4,558.4 ms 74.16 ms 19.26 ms 197000.0000 61000.0000 6000.0000 1539.73 MB
LumenWorksCsvReader 1000000 4,566.0 ms 120.93 ms 18.71 ms 662000.0000 174000.0000 8000.0000 5234.87 MB
LinqToCsv 1000000 4,877.2 ms 99.40 ms 25.81 ms 712000.0000 184000.0000 8000.0000 5635.41 MB
TinyCsvReader 1000000 5,028.2 ms 189.55 ms 49.23 ms 790000.0000 203000.0000 8000.0000 6251.62 MB
CsvTools 1000000 5,710.7 ms 98.59 ms 25.60 ms 265000.0000 136000.0000 7000.0000 2073.76 MB
StackOverflowRegex 1000000 6,349.9 ms 208.39 ms 32.25 ms 591000.0000 180000.0000 4000.0000 4704.53 MB
FlatFiles 1000000 6,399.7 ms 138.02 ms 21.36 ms 531000.0000 183000.0000 7000.0000 4200.99 MB
Csv 1000000 7,206.1 ms 726.18 ms 188.59 ms 1195000.0000 301000.0000 2000.0000 9537.86 MB
Angara_Table 1000000 8,330.8 ms 287.82 ms 74.75 ms 460000.0000 204000.0000 7000.0000 4027.37 MB
Microsoft_Data_Analysis 1000000 11,064.8 ms 123.67 ms 19.14 ms 1626000.0000 423000.0000 9000.0000 13310.63 MB
Microsoft_VisualBasic_FileIO_TextFieldParser 1000000 14,733.1 ms 275.82 ms 71.63 ms 5034000.0000 1007000.0000 9000.0000 40105.69 MB
ChoETL 1000000 18,824.9 ms 478.61 ms 74.07 ms 840000.0000 215000.0000 8000.0000 6658.02 MB
CommonLibrary_NET 1000000 28,331.4 ms 4,246.17 ms 1,102.72 ms 1785000.0000 693000.0000 11000.0000 14799.64 MB
joelverhagen commented 8 months ago

Updated the blog with these results. Still used workstation GC for the main graphics to be consistent with previous results.