[{"data":1,"prerenderedAt":205},["ShallowReactive",2],{"project-39290580":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":29,"sentiment":30,"stance_mix":31,"scored_comments":35,"aspects":36,"strip":40,"post_text":42,"what":43,"said":76,"maker_in_thread":136,"shape":144,"grid":148,"attempts":167,"same_week":168,"maker_shows":197,"maker_hidden":198,"reader_version":199,"card":200},"39290580","StringZilla","StringZilla v3 with C++, Rust, and Swift bindings, and AVX-512 and NEON","title","Show HN: StringZilla v3 with C++, Rust, and Swift bindings, and AVX-512 and NEON","https:\u002F\u002Fgithub.com\u002Fashvardanian\u002FStringZilla\u002Freleases\u002Ftag\u002Fv3.0.0","github.com","ashvardanian",1707323504,2024,15,10,2137,3515,61,"shown","dev_tools","string library","library",[24,25,26,27,28],"string operations","simd","avx-512","neon","levenshtein","quiet",null,{"positive":32,"neutral":33,"mixed":34,"critical":34},1,3,0,4,{"idea":37,"performance":38,"docs":39},{"positive":32,"critical":34},{"positive":34,"critical":34},{"positive":34,"critical":34},[41,34,34,33,34,34,33,34,33,34],5,"Hi HN!\n\nI've spent the last few weeks optimizing the string operations in StringZilla. You'd be surprised how much performance GLibc and the Standard Templates Library of C++ are leaving on the table, especially on Arm and, likely, on RISC-V. I've significantly increased the number of implemented algorithms for different workloads. Searching across English texts on Arm, for example:\n\n- is 4.4x faster than STL,\n\n- and 16.8x faster in reverse order.\n\nThe new version of the library now includes a C++ binding largely compatible with the C++ Standard, featuring all 17 overloads of the `replace` fun",{"problem":44,"audience":30,"pricing":30,"motivation":50,"time_to_build":30,"stack":57,"openness":75,"stage":75,"team_size":75},{"value":45,"source":46,"evidence":47},"Slow string operations in glibc and C++ STL, especially on Arm","maker",[48],{"id":49},"post",{"value":51,"source":46,"evidence":52},"Maker sees large performance gaps in libc and STL, especially on Arm",[53,54],{"id":49},{"id":55,"by":11,"text":56},"39298736","It’s mostly coming from using the Arm NEON intrinsics, not much magic. While working on the library, I was shocked to see how under-vectorized LibC is on Arm. A lot of…",[58,63,67,71],{"value":59,"source":60,"evidence":61},"C","inferred",[62],{"id":49},{"value":64,"source":46,"evidence":65},"C++",[66],{"id":49},{"value":68,"source":46,"evidence":69},"Rust",[70],{"id":49},{"value":72,"source":46,"evidence":73},"Swift",[74],{"id":49},"unknown",{"praise":77,"objections":97,"requests":105,"questions":116,"alternatives":125},[78,90],{"value":79,"source":80,"evidence":81},"Interesting performance work on Arm","commenter",[82,86],{"id":83,"by":84,"text":85},"39296004","sgerenser","This looks interesting. If I can scrounge up some time in the next few weeks maybe I’ll try to contribute.",{"id":87,"by":88,"text":89},"39297943","chaisan","nice. where is the the main part of the 4.4x boost on ARM coming from?",{"value":91,"source":80,"evidence":92},"Community growing around bindings and infra",[93],{"id":94,"by":95,"text":96},"39299208","skeptrune","cool to see the community coming together and adding bindings to other languages i definitely agree that the world needs more infra like this; it's great to see a community…",[98],{"value":99,"source":80,"evidence":100},"Libc prioritises simplicity over SIMD performance",[101],{"id":102,"by":103,"text":104},"39321331","menaerus","I'd say that SIMD and even moreso CPU internals knowledge is not quite common and upmost performance is I think not among the highest priority goals in libc\u002Flibc++\u002Flibstdc++. The…",[106],{"value":107,"source":80,"evidence":108},"Clarify which libc version benchmarks used",[109,113],{"id":110,"by":111,"text":112},"39296311","snvzz",">libc Which libc?",{"id":114,"by":111,"text":115},"39298718","Cool. It would likely be best to edit to show \"glibc-2.35\" directly in place of libc.",[117,121],{"value":118,"source":80,"evidence":119},"Where does the 4.4x speedup on Arm come from",[120],{"id":87,"by":88,"text":89},{"value":122,"source":80,"evidence":123},"Which libc was benchmarked",[124],{"id":110,"by":111,"text":112},[126,132],{"value":127,"source":80,"evidence":128},"GLibc",[129],{"id":130,"by":11,"text":131},"39298705","Benchmarks were repeated on multiple systems. The numbers I reference here come from glibc v2.35 and are explained in more details in the README :)",{"value":133,"source":80,"evidence":134},"C++ STL",[135],{"id":130,"by":11,"text":131},{"comments":35,"answered":137,"key":138},2,[139,142,143],{"id":140,"text":141},"39298710","Thank you! There are still a lot of good first issues: https:\u002F\u002Fgithub.com\u002Fashvardanian\u002FStringZilla\u002Fissues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22",{"id":55,"text":56},{"id":130,"text":131},{"commenters":145,"max_depth":35,"maker_replies":35,"first_comment_mins":146,"lifespan_hours":147},6,452,54,[149,151,153,155,157,159,161,162,163,164],[83,34,41,150,84,34],"project\u002Fpositive\u002Fidea",[140,34,34,152,11,32],"project\u002Fneutral\u002Fdocs",[94,32,34,154,95,34],"other\u002Fneutral\u002Fnone",[87,137,33,156,88,34],"project\u002Fneutral\u002Fperformance",[55,137,34,158,11,32],"project\u002Fpositive\u002Fperformance",[102,137,34,160,103,34],"commenter\u002Fneutral\u002Fperformance",[110,33,33,152,111,34],[130,33,34,152,11,32],[114,33,33,152,111,34],[165,33,34,166,11,32],"39298755","maker\u002Fneutral\u002Fnone",[],[169,174,178,183,188,193],{"id":170,"name":171,"points":172,"category":173},"39288039","One Minute Focus",741,"consumer_social",{"id":175,"name":176,"points":177,"category":20},"39263854","Atopile",595,{"id":179,"name":180,"points":181,"category":182},"39261486","Natural-SQL-7B",362,"ai",{"id":184,"name":185,"points":186,"category":187},"39214743","filippo.io\u002Fmlkem768",315,"languages",{"id":189,"name":190,"points":191,"category":192},"39232572","Minesweeper Twist",293,"games",{"id":194,"name":195,"points":196,"category":173},"39260760","Random Hacker News",267,7,false,"v2",{"id":201,"name":5,"line":6,"ai":198,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":30,"top":18,"kw":202,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":203,"url":9,"mix":204,"praise":79,"objection":99,"sub":21},39290580,[24,25,26,27,28],"5003003030",[32,33,34,34],1794036649361]