[{"data":1,"prerenderedAt":543},["ShallowReactive",2],{"project-23045207":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":27,"sentiment":28,"stance_mix":29,"scored_comments":34,"aspects":35,"strip":44,"post_text":46,"what":47,"said":81,"maker_in_thread":222,"shape":231,"grid":235,"attempts":504,"same_week":505,"maker_shows":358,"maker_hidden":535,"reader_version":536,"card":537},"23045207","uPlot","Plotting 3 years of hourly data in 150ms","title","Show HN: Plotting 3 years of hourly data in 150ms","https:\u002F\u002Fleeoniya.github.io\u002FuPlot\u002Fdemos\u002Ftime-periods.html","leeoniya.github.io","leeoniya",1588358652,2020,785,102,9,3028,1,"legend","data","charting library","library",[21,24,25,26],"javascript charts","time series plot","canvas rendering","loved",0.424,{"positive":30,"neutral":31,"mixed":32,"critical":33},27,19,4,3,53,{"execution":36,"design":39,"docs":40,"performance":41,"idea":43},{"positive":37,"critical":38},2,0,{"positive":32,"critical":38},{"positive":37,"critical":38},{"positive":42,"critical":33},11,{"positive":18,"critical":38},[45,45,33,38,38,45,45,45,45,45,33,33,33,38,45,38,38,38,38,33,45,18,45,18,45,32,45,45,45,33,45,45,33,33,45,45,45,38,18,33],5,null,{"problem":48,"audience":46,"pricing":55,"motivation":63,"time_to_build":46,"stack":67,"openness":78,"stage":79,"team_size":80},{"value":49,"source":50,"evidence":51},"Trend charts in tools like Google Analytics and Google Ads render slowly","maker",[52],{"id":53,"by":11,"text":54},"23045226","Unfortunately, I have to use Google Analytics and Google Ads at work every day, and these UIs have absolutely terrible performance :( A small part of the problem is drawing the…",{"value":56,"source":57,"evidence":58},"MIT license","commenter",[59],{"id":60,"by":61,"text":62},"23047200","jedberg","This is fantastic and may solve a real problem for me. Thank you so much, and thank you for the MIT license!",{"value":64,"source":50,"evidence":65},"Google Analytics and Google Ads charts are slow to use at work; wanted to see what was possible",[66],{"id":53,"by":11,"text":54},[68,74],{"value":69,"source":50,"evidence":70},"JavaScript",[71],{"id":72,"by":11,"text":73},"23047156","a few things: - the data is flat arrays of numbers - there is no per-datapoint memory allocation beyond whatever is necessary for the browser to construct the canvas Path2D…",{"value":75,"source":50,"evidence":76},"HTML canvas (Path2D)",[77],{"id":72,"by":11,"text":73},"open_source","launched","unknown",{"praise":82,"objections":121,"requests":151,"questions":173,"alternatives":192},[83,102,113],{"value":84,"source":57,"evidence":85},"Very fast rendering performance on large datasets",[86,90,94,98],{"id":87,"by":88,"text":89},"23047044","pensatoio","I clicked out of mild interest and am completely blown away. I wish this kind of optimization was more common. Well done!",{"id":91,"by":92,"text":93},"23047799","ryanmjacobs","Holy crap, this is bleeding fast. This is great!",{"id":95,"by":96,"text":97},"23047546","ragona","Dang, this renders FAST. Well done.",{"id":99,"by":100,"text":101},"23046392","Kiro","I didn't even read the title before clicking and was blown away at the speed. Honestly thought something acted up since you're not used to seeing things render this fast.",{"value":103,"source":57,"evidence":104},"Clean source code and good README",[105,109],{"id":106,"by":107,"text":108},"23046171","tylerscott","Congrats on the performance and thanks for posting. I especially appreciate how clean the source code is. Great work!",{"id":110,"by":111,"text":112},"23050208","edf13","Excellent work - and a great Readme to boot too!",{"value":114,"source":57,"evidence":115},"Beautiful, responsive design",[116,120],{"id":117,"by":118,"text":119},"23046215","hardlianotion","That's rather beautiful.",{"id":99,"by":100,"text":101},[122,137,144],{"value":123,"source":57,"evidence":124},"Performance claim in title is misleading about what is timed (bootup included)",[125,129,133],{"id":126,"by":127,"text":128},"23045600","contravariant","Honestly the title doesn't do it justice. For a plotting tool it's not an impossible task, but making a webpage this responsive is incredibly hard, so well done there.",{"id":130,"by":131,"text":132},"23046641","fabian2k","The 150ms benchmark in the title is really selling this short, the performance is very impressive. The 150ms seem to refer to the time it takes to initialize the graph, and with…",{"id":134,"by":135,"text":136},"23059465","emilfihlman","I'm somewhat confused. Is 150ms considered low? That's less than 7fps. 336524=26280. Emitting 26k points is like child's play for any program, are we really so far down in bloat…",{"value":138,"source":57,"evidence":139},"Selection stops when mouse leaves the chart",[140],{"id":141,"by":142,"text":143},"23046853","tiborsaas","Minor suggestion: not really a bug, but inconvenient UX. When I move start the selection and I move my mouse outside the chart it stops selecting it. If you added the mouse…",{"value":145,"source":57,"evidence":146},"Cursor does not update during horizontal scroll",[147],{"id":148,"by":149,"text":150},"23046449","alextheparrot","Would it be possible to allow for the cursor to still update when doing a horizontal scroll? When I move the mouse left and right it does that, but it doesn't move when I…",[152,159,166],{"value":153,"source":57,"evidence":154},"Write a blog post explaining the performance techniques",[155],{"id":156,"by":157,"text":158},"23046244","mkchoi212","Super cool! It would be great if you could provide some insight into how you built this and the kind of tricks you had to use to make this possible. Looking forward to a blog…",{"value":160,"source":57,"evidence":161},"Support tooltips rather than legend numbers",[162],{"id":163,"by":164,"text":165},"23046487","kdrag0n","That looks amazing, nice job! I was trying to create a seb dashboard with several graphs each with a few hundred data points recently. None of the libraries felt \"snappy\" on a…",{"value":167,"source":57,"evidence":168},"Compare against Anychart and other libraries",[169],{"id":170,"by":171,"text":172},"23071075","uptown","This looks nice. I'm currently using HighCharts and Anychart. Wish they'd included Anychart in their performance comparisons.",[174,185],{"value":175,"source":57,"evidence":176},"How does performance compare to Highcharts and Dygraphs",[177,181],{"id":178,"by":179,"text":180},"23045621","winrid","Cool!! I wonder how the performance compares to Highcharts?",{"id":182,"by":183,"text":184},"23046887","IshKebab","That's 26k points. I don't think it's very difficult to render that many points quickly unless you try and use SVG. How long does Dygraphs take?",{"value":186,"source":57,"evidence":187},"How to zoom out",[188],{"id":189,"by":190,"text":191},"23045855","wiradikusuma","Very fast indeed! How do I zoom out?",[193,200,204,211],{"value":194,"source":57,"evidence":195},"Dygraphs",[196],{"id":197,"by":198,"text":199},"23046737","adeelk93","I like this a lot! Reminds me of dygraphs, and then I saw it in that in the acknowledgements :)",{"value":201,"source":57,"evidence":202},"Highcharts",[203],{"id":178,"by":179,"text":180},{"value":205,"source":57,"evidence":206},"Bokeh",[207],{"id":208,"by":209,"text":210},"23046049","iamleppert","This is really cool! Another great library for working with large time-series datasets is Bokeh (https:\u002F\u002Fdocs.bokeh.org\u002Fen\u002Flatest\u002Findex.html).",{"value":212,"source":57,"evidence":213},"Dask\u002FPlotly and Datashader",[214,218],{"id":215,"by":216,"text":217},"23045768","doublesCs","Hi, I'm very interested in this. I've been using dask\u002Fplotly for a side project but it's just too slow. If you know dask, do you think you could discuss which features of dask…",{"id":219,"by":220,"text":221},"23045956","jparmer","Here's a Dash app that use Dask & Datashader for fast aggregations on +40M rows: https:\u002F\u002Fdash-gallery.plotly.host\u002Fdash-world-cell-towers The source code, which can be used as a…",{"comments":30,"answered":16,"key":223},[224,225,228],{"id":53,"text":54},{"id":226,"text":227},"23045586","thanks!",{"id":229,"text":230},"23045627","it's an understatement for sure :) a lot of time is spent on just DOM layout and JITing the JS, which get amortized with huge datasets. the 166k bench doesnt take any longer.",{"commenters":232,"max_depth":233,"maker_replies":30,"first_comment_mins":37,"lifespan_hours":234},68,6,71,[236,238,242,244,246,248,250,252,255,258,261,263,265,268,270,274,276,277,280,283,286,289,292,293,296,299,302,304,307,310,313,316,319,320,321,323,326,328,330,333,335,338,341,343,345,347,350,353,354,356,360,362,364,366,369,372,375,377,378,380,382,384,388,391,394,398,400,404,406,408,412,415,419,423,426,428,430,433,435,437,439,443,445,447,450,453,455,458,459,461,465,469,471,475,479,483,485,489,492,495,499,502],[53,38,38,237,11,18],"maker\u002Fneutral\u002Fidea",[239,38,45,240,241,38],"23045469","maker\u002Fpositive\u002Fnone","hardwaresofton",[226,38,38,243,11,18],"commenter\u002Fneutral\u002Fnone",[126,38,45,245,127,38],"maker\u002Fpositive\u002Fexecution",[229,38,38,247,11,18],"project\u002Fpositive\u002Fperformance",[215,38,33,249,216,38],"project\u002Fneutral\u002Fnone",[219,38,38,251,220,38],"other\u002Fneutral\u002Fnone",[253,38,38,251,254,38],"23046335","vamega",[256,38,38,251,257,38],"23047237","kylebarron",[259,38,38,251,260,38],"23047636","gesman",[262,38,38,251,11,18],"23047656",[264,38,38,251,260,38],"23049768",[266,38,38,251,267,38],"23049574","jcims",[117,38,45,269,118,38],"project\u002Fpositive\u002Fdesign",[271,38,45,272,273,38],"23046511","project\u002Fpositive\u002Fdocs","simmers",[197,38,45,275,198,38],"project\u002Fpositive\u002Fnone",[60,38,45,275,61,38],[278,38,45,247,279,38],"23047218","maxwellg",[281,38,38,282,11,18],"23047493","maker\u002Fneutral\u002Fperformance",[284,38,45,275,285,38],"23049197","chrissnell",[287,38,45,275,288,38],"23049808","jrumbut",[290,38,38,251,291,38],"23058222","victorthehuman",[130,18,45,247,131,38],[294,18,45,247,295,38],"23046861","43920",[297,18,38,298,11,18],"23046897","project\u002Fneutral\u002Fexecution",[300,18,33,301,131,38],"23046944","project\u002Fmixed\u002Fperformance",[303,18,38,249,11,18],"23047523",[305,18,38,306,11,18],"23047172","maker\u002Fneutral\u002Fnone",[308,37,33,301,309,38],"23048491","krick",[311,37,38,312,11,18],"23048527","project\u002Fneutral\u002Fperformance",[314,33,33,312,315,38],"23045781","zlepper",[317,33,33,312,318,38],"23047571","_bxg1",[156,32,33,306,157,38],[72,32,38,312,11,18],[322,32,38,312,11,18],"23049959",[324,32,45,269,325,38],"23054409","1wheel",[327,32,38,312,11,18],"23054668",[329,45,38,251,318,38],"23047557",[331,45,38,251,332,38],"23047792","ComputerGuru",[334,45,38,251,318,38],"23047886",[336,45,38,251,337,38],"23048590","cozzyd",[339,45,38,251,340,38],"23049247","eitland",[342,45,38,251,11,18],"23049290",[344,45,38,251,318,38],"23049413",[346,45,38,251,340,38],"23049893",[348,45,38,251,349,38],"23052287","projektfu",[351,45,38,251,352,38],"23049612","petre",[208,233,38,251,209,38],[355,233,38,251,11,18],"23046065",[357,358,33,306,359,38],"23045467",7,"ricardobeat",[361,358,38,249,11,18],"23045555",[87,363,45,247,88,38],8,[163,16,33,365,164,38],"project\u002Fmixed\u002Fdesign",[367,16,38,368,11,18],"23046868","project\u002Fneutral\u002Fdocs",[370,16,38,371,11,18],"23049796","project\u002Fneutral\u002Fdesign",[182,373,18,374,183,38],10,"project\u002Fcritical\u002Fperformance",[376,373,38,312,11,18],"23047000",[99,42,45,269,100,38],[379,42,38,371,11,18],"23046422",[134,381,18,374,135,38],12,[383,381,38,282,11,18],"23059945",[385,386,45,275,387,38],"23046533",13,"yread",[389,386,33,298,390,38],"23046653","joshspankit",[392,386,33,298,393,38],"23047467","etimberg",[395,396,45,247,397,38],"23046663",14,"xtacy",[141,399,33,371,142,38],15,[401,402,45,247,403,38],"23051050",16,"jzer0cool",[148,405,45,269,149,38],17,[407,405,38,306,11,18],"23048869",[409,410,45,247,411,38],"23047593",18,"deathanatos",[413,410,38,251,414,38],"23048305","__float",[416,31,45,417,418,38],"23045943","project\u002Fpositive\u002Fidea","munro",[420,421,33,249,422,38],"23046319",20,"larrydag",[424,421,33,249,425,38],"23046699","em500",[427,421,38,243,422,38],"23061682",[170,429,33,312,171,38],21,[431,429,38,432,11,18],"23071232","other\u002Fneutral\u002Fperformance",[106,434,45,245,107,38],22,[189,436,33,371,190,38],23,[438,436,38,371,11,18],"23045859",[440,441,45,247,442,38],"23047904",24,"umvi",[178,444,33,312,179,38],25,[446,444,38,312,11,18],"23045636",[448,444,33,312,449,38],"23045641","brockwhittaker",[451,444,33,312,452,38],"23047046","oplav",[454,444,38,312,11,18],"23047245",[110,456,45,457,111,38],26,"maker\u002Fpositive\u002Fdocs",[91,30,45,247,92,38],[95,460,45,247,96,38],28,[462,463,33,301,464,38],"23048026",29,"keithnz",[466,467,45,247,468,38],"23048909",30,"elktea",[470,467,38,251,11,18],"23048917",[472,473,45,240,474,38],"23046275",31,"strig",[476,477,33,249,478,38],"23047384",32,"firemelt",[480,481,38,432,482,38],"23046958",33,"augustt",[484,481,38,247,11,18],"23047110",[486,481,38,487,488,38],"23048069","commenter\u002Fneutral\u002Fperformance","ehsankia",[490,481,18,374,491,38],"23047489","ori_b",[493,481,38,251,494,38],"23049846","jkob_",[496,497,33,298,498,38],"23046177",34,"microcolonel",[500,497,33,298,501,38],"23046635","Arelius",[503,497,33,298,498,38],"23047221",[],[506,511,516,520,525,530],{"id":507,"name":508,"points":509,"category":510},"23070567","Caddy 2",778,"infrastructure",{"id":512,"name":513,"points":514,"category":515},"23066776","SQL Police Department",550,"learning_science",{"id":517,"name":518,"points":519,"category":515},"23042079","RegEx for Regular Folk",502,{"id":521,"name":522,"points":523,"category":524},"23033387","Tara",406,"productivity",{"id":526,"name":527,"points":528,"category":529},"23042558","Ameelio.org",364,"web_saas",{"id":531,"name":532,"points":533,"category":534},"23070821","rich",362,"dev_tools",false,"v2",{"id":538,"name":5,"line":6,"ai":535,"cat":20,"year":13,"points":14,"comments":15,"rec":27,"s":539,"top":18,"kw":540,"maker":11,"domain":10,"tier":19,"attempts":38,"strip":541,"url":9,"mix":542,"praise":84,"objection":123,"sub":21},23045207,0.42,[21,24,25,26],"5530055555333050000351515455535533555013",[30,31,32,33],1794036589947]