[{"data":1,"prerenderedAt":230},["ShallowReactive",2],{"project-37381777":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":34,"aspects":35,"strip":39,"post_text":42,"what":43,"said":68,"maker_in_thread":129,"shape":138,"grid":143,"attempts":193,"same_week":194,"maker_shows":31,"maker_hidden":222,"reader_version":223,"card":224},"37381777","uDSV.js","A faster CSV parser","title","Show HN: uDSV.js – A faster CSV parser","https:\u002F\u002Fgithub.com\u002Fleeoniya\u002FuDSV","github.com","leeoniya",1693843476,2023,67,23,892,3109,29,"notable","languages","csv parser library","library",[24,25,26,27],"csv parser","javascript csv","fast csv","csv benchmark","loved",0.529,{"positive":31,"neutral":32,"mixed":33,"critical":33},7,1,0,8,{"docs":36,"performance":37},{"positive":32,"critical":33},{"positive":38,"critical":33},2,[33,33,33,33,33,33,33,33,33,40,33,40,40,40,33,33,40,33,40,33,41,33,40],5,3,"Hey folks!\n\nI know CSV parsers (especially in JS) aren't terribly exciting and someone writes a \"better\" one every week.\n\nI'm in the middle of my parental leave, and this was a project that came out of me looking for the fastest\u002Fsmallest CSV parser. It all started so innocently, and then turned into a benchmark-validation-athon; the library itself took ~2 weeks to write, but the performance comparisons took another ~4 weeks (on and off).\n\nThe benchmarks were a huge effort, but I think they are the most thorough to date, both in breadth and in depth, so hopefully you find them useful: https:\u002F\u002Fg",{"problem":44,"audience":50,"pricing":50,"motivation":51,"time_to_build":55,"stack":59,"openness":67,"stage":67,"team_size":67},{"value":45,"source":46,"evidence":47},"Parsing CSV data quickly and with small footprint in JavaScript.","maker",[48],{"id":49},"post",null,{"value":52,"source":46,"evidence":53},"Maker was looking for the fastest and smallest CSV parser during parental leave.",[54],{"id":49},{"value":56,"source":46,"evidence":57},"Library about 2 weeks to write; performance comparisons about 4 more weeks.",[58],{"id":49},[60],{"value":61,"source":46,"evidence":62},"JavaScript",[63,64],{"id":49},{"id":65,"by":11,"text":66},"37413937","thanks :) d3-dsv is one of the better ones for sure. it even slightly beats uDSV in Bun on some benchmarks. maybe it's better optimized for JSC rather than V8. it doesnt do…","unknown",{"praise":69,"objections":97,"requests":104,"questions":105,"alternatives":112},[70,82],{"value":71,"source":72,"evidence":73},"Benchmarks are thorough and well done.","commenter",[74,78],{"id":75,"by":76,"text":77},"37413912","couchand","The benchmarks are well done, definitely worth the effort you put in. Taking a look at them I'm satisfied with my default choice of d3-dsv for balancing speed and reliability.…",{"id":79,"by":80,"text":81},"37415853","knrz","Super cool! Great work on making it fast and having clear benchmarks. I had some fun looking through them and seeing how comma-separated-values — a package I authored ~9 years…",{"value":83,"source":72,"evidence":84},"Maker's previous projects (uPlot, uFuzzy) are well regarded.",[85,89,93],{"id":86,"by":87,"text":88},"37414630","pickledish","Ha, the creator of uplot strikes again! Love seeing your stuff man, always so thorough and well-explained, nice work (https:\u002F\u002Fgithub.com\u002Fleeoniya\u002FuPlot)",{"id":90,"by":91,"text":92},"37415101","jkrubin","Was wondering where I had seen this person before… he wrote ufuzzy, which is pretty dope imo!",{"id":94,"by":95,"text":96},"37415118","MrJohz","I was going to write a simpler comment but referencing uFuzzy instead! It's one of my favourite fuzzy search tools, but possibly even better than uFuzzy itself is the fuzzy…",[98],{"value":99,"source":46,"evidence":100},"Benchmark runner miscounts rows for Airport2.csv, so some numbers are off.",[101],{"id":102,"by":11,"text":103},"37413819","no, it's just the bench runner. dekkai and udsv finish in about 2.5s. the runner is designed to read array.length, but we're not accumulating in that case, so the math is...off :)",[],[106],{"value":107,"source":72,"evidence":108},"Has WASM or WebGL\u002FWebGPU been tried for CSV parsing speed?",[109],{"id":110,"by":11,"text":111},"37413792","nice, is this something you've tried in WASM or WebGL\u002FWebGPU? at some point it makes sense to simply recommend using WASM SQLite (or DuckDB) to load the data for OLAP stuff. im…",[113,118,125],{"value":114,"source":72,"evidence":115},"d3-dsv",[116,117],{"id":75,"by":76,"text":77},{"id":65,"by":11,"text":66},{"value":119,"source":72,"evidence":120},"Apache Arrow CSV parser compiled to WASM",[121],{"id":122,"by":123,"text":124},"37413956","texodus","The CSV parser for [Perspective](https:\u002F\u002Fgithub.com\u002Ffinos\u002Fperspective) uses the [Apache Arrow](https:\u002F\u002Fgithub.com\u002Fapache\u002Farrow) C++ CSV parser compiled to WASM. It's not…",{"value":126,"source":46,"evidence":127},"DuckDB or WASM SQLite for large CSV loading",[128],{"id":110,"by":11,"text":111},{"comments":31,"answered":32,"key":130},[131,132,135],{"id":110,"text":111},{"id":133,"text":134},"37413987","what i learned from benchmarking Dekkai, is that simply \"being in WASM\" is a poor indicator of actual performance if you ever need to pull the values across that boundary into…",{"id":136,"text":137},"37414666","ironically, uPlot is a great counter-example to projects that are \"well-explained\" :D",{"commenters":139,"max_depth":140,"maker_replies":31,"first_comment_mins":141,"lifespan_hours":142},11,6,3466,284,[144,148,150,151,152,156,159,161,163,165,167,169,172,174,175,177,179,181,182,184,186,191,192],[145,33,33,146,147,33],"37413760","other\u002Fneutral\u002Fperformance","liuliu",[110,33,33,149,11,32],"commenter\u002Fneutral\u002Fperformance",[122,33,33,146,123,33],[133,33,33,149,11,32],[153,33,33,154,155,33],"37414599","commenter\u002Fneutral\u002Fnone","tomcam",[157,33,33,154,158,33],"37414781","davefol",[160,33,33,154,155,33],"37415483",[162,33,33,154,147,33],"37470903",[164,33,33,154,155,33],"37534071",[86,32,40,166,87,33],"maker\u002Fpositive\u002Fnone",[136,32,33,168,11,32],"other\u002Fneutral\u002Fnone",[170,32,40,171,87,33],"37414714","maker\u002Fpositive\u002Fdocs",[173,32,40,166,91,33],"37415108",[94,32,40,166,95,33],[176,32,33,154,95,33],"37415845",[178,32,33,154,11,32],"37422865",[75,38,40,180,76,33],"project\u002Fpositive\u002Fperformance",[65,38,33,146,11,32],[79,41,40,183,80,33],"maker\u002Fpositive\u002Fperformance",[185,41,33,168,11,32],"37419052",[187,188,41,189,190,33],"37413808",4,"project\u002Fneutral\u002Fperformance","tyingq",[102,188,33,189,11,32],[90,40,40,166,91,33],[],[195,200,204,208,213,217],{"id":196,"name":197,"points":198,"category":199},"37408150","smolsite.zip",602,"dev_tools",{"id":201,"name":202,"points":203,"category":199},"37391848","Puck",451,{"id":205,"name":206,"points":207,"category":199},"37393099","RecipeUI",275,{"id":209,"name":210,"points":211,"category":212},"37381268","Keep",181,"infrastructure",{"id":214,"name":215,"points":216,"category":199},"37364124","Shaq",155,{"id":218,"name":219,"points":220,"category":221},"37398812","Perplexity",153,"ai",false,"v2",{"id":225,"name":5,"line":6,"ai":222,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":226,"top":18,"kw":227,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":228,"url":9,"mix":229,"praise":71,"objection":99,"sub":21},37381777,0.53,[24,25,26,27],"00000000050555005050305",[31,32,33,33],1793991073026]