Performance Icon

Performance

51 Stories
All Topics

Victor Zhou victorzhou.com

Minify Your SVGs

Victor Zhou uses a lot of SVGs on his blog. Do you? So now he optimizes their size as part of his build process. Do you? 62 SVGs minified, reducing the total size from 459322 bytes to 208897 bytes, a reduction of 54.5%! That’s a total of 250 KB, or 4 KB per SVG. Keep in mind that all of my SVGs were already saved in the Optimized SVG format - these savings were on top of already optimized SVGs. If you haven’t thought about minifying your SVGs before, chances are you’d see much more drastic results.

read more

Smashing Magazine Icon Smashing Magazine

Using the web for a day on a 50 mb budget

This is a fascinating look at how “size negligence”, AKA not paying close attention to the size of your images, javascript, etc impacts people in parts of the world where data is slow and expensive. Author Chris Ashton on why you should care: We don’t have the power to change the global cost of data inequality. But we do have the power to lessen its impact, improving the experience for everyone in the process.

read more

Tim Kadlec timkadlec.com

Web performance as exclusion?

Tim Kadlec writes about “The ethics of web performance” and the idea of web performance having ethical ramifications. When you look at the evidence, it’s hard to see one could argue performance doesn’t have ethical ramifications. So clearly, folks who have built a heavy site are bad, unethical people, right? Here’s the thing. I have never in my career met a single person who set out to make a site perform poorly. Not once. People want to do good work. But a lot of folks are in situations where that’s very difficult. The business models that support much of the content on the web don’t favor better performance. Nor does the culture of many organizations who end up prioritizing the next feature over improving things like performance or accessibility or security. I would argue the other angle, “Web performance as compassion” to show how you can show compassion for the users of your software through performance.

read more

Tom Warren The Verge

Slack’s new desktop app loads 33 percent faster and uses less RAM

Good news fellow Slack users, your productivity just got bumped by the perf gods of Slack thanks to their continued efforts and focus on the desktop app’s performance. Slack is unveiling a new version of its desktop app for Windows and macOS today that promises big performance improvements. Slack has rebuilt its desktop app to focus on speed, and the company claims Slack will now launch 33 percent faster than before. The Slack app will even use 50 percent less RAM than before, according to the company. Slack has been working on this overhaul for two years, slowly modernizing parts of its code along the way. While the desktop apps still run on Electron, all of the UI parts have been rebuilt using React to fix some of the shortcomings of the existing Slack app.

read more

Thoughtbot Icon Thoughtbot

Profiling Vim

Chris Thorn writing for Thoughtbot: Lately, I’ve noticed that opening Markdown files in Vim is slow. I don’t know exactly how slow, but slow enough that I notice a pause after opening the file before I can edit it. I’m not sure why or when it started, but it’s painful enough that I want to track down and alleviate it. I, too, have felt this pain, which is one of the reasons I no longer use Vim as my full-time coding editor. I still use it enough for its sluggishness to bug me, but not quite enough to go chasing down why it’s sluggish. This article might change my calculus on that decision.

read more

Addy Osmani v8.dev

The cost of JavaScript in 2019

An update from Addy Osmani about the impact of JavaScript on the web and performance in 2019, and things you can do to impact it. Interesting because the number one items to pay attention to have changed from the conventional wisdom of a couple years back. Osmani: One large change to the cost of JavaScript over the last few years has been an improvement in how fast browsers can parse and compile script. In 2019, the dominant costs of processing scripts are now download and CPU execution time.

read more

Smashing Magazine Icon Smashing Magazine

A progressive migration to native lazy loading

Native lazy loading is coming to the web. Since it doesn’t depend on JavaScript, it will revolutionize the way we lazy load content today, making it easier for developers to lazy load images and iframes. I’m excited about native lazy loading! We’ve been using lozad.js for lazy loading with some success. There are times when it seems that IntersectionObserver fails to its job and an image won’t load. (If you scroll the element out and back in to the viewport, it will usually work the second time.) But it’s not a feature we can polyfill, and it will take some time before it becomes usable across all browsers. n this article, you’ll learn how it works and how you can progressively replace your JavaScript-driven lazy loading with its native alternative, thanks to hybrid lazy loading. I might try this hybrid approach and see what happens…

read more

CSS Wizardry Icon CSS Wizardry

Self-host your static assets

A revealing look at the costs and risks of linking out to CDN-hosted assets for common libraries. This “best practice” may be anything but, especially with today’s ease of setting up CDNs in front of your own content with tools like Cloudflare. On the practice of linking to 3rd party CDNs, Harry doesn’t hold back: There are a number of perceived benefits to doing this, but my aim later in this article is to either debunk these claims, or show how other costs vastly outweigh them.

read more

Dave Cheney dave.cheney.net

Dave Cheney's "High Performance Go" workshop docs

If you haven’t attended the workshop directly, the next best thing is to learn indirectly by reading the workshop’s docs. The goal for this workshop is to give you the tools you need to diagnose performance problems in your Go applications and fix them. It’s licensed under the Creative Commons Attribution-ShareAlike 4.0 International license and the source is on GitHub.

read more

Damian Gryski github.com

Practices for writing high-performance Go

From writing and optimizing Go code to common gotchas with the Go standard library, Damian Gryski shared his thoughts on Go performance optimization and outlined best practices for writing high-performance Go code. Available in English, 中文, and Español. When and where to optimize — Every optimization has a cost. Generally this cost is expressed in terms of code complexity or cognitive load – optimized code is rarely simpler than the unoptimized version. But there’s another side that I’ll call the economics of optimization. As a programmer, your time is valuable. There’s the opportunity cost of what else you could be working on for your project, which bugs to fix, which features to add. Optimizing things is fun, but it’s not always the right task to choose. Performance is a feature, but so is shipping, and so is correctness.

read more

Sergiy Kukunin habr.com

The pros and cons of Elixir

In this short Q&A, Sergiy Kukunin, an Elixir expert, shares his thoughts on why Elixir is becoming so popular, its core advantages, and its drawbacks. Sergiy also shared this as a takeaway to getting started with Elixir. …the syntax of Elixir has some things in common with Ruby. The languages are entirely different, but it is always good to see symbols and elements you are used to. The simplest thing is to use some of the new Elixir-compatible web-development frameworks. The most popular web framework for Elixir is Phoenix. You should definitely give it a try, especially if you are used to using Ruby on Rails. This will simplify development while still making the app faster and more reliable.

read more

Jeremy Wagner A List Apart

Responsible JavaScript (Part 1)

This pretty much sums up the point Jeremy is trying to get across with this post on A List Apart and the future parts to this story of “Responsible JavaScript.” I’m not here to kill JavaScript — Make no mistake, I have no ill will toward JavaScript. It’s given me a career and—if I’m being honest with myself—a source of enjoyment for over a decade. Like any long-term relationship, I learn more about it the more time I spend with it. It’s a mature, feature-rich language that only gets more capable and elegant with every passing year. Yet, there are times when I feel like JavaScript and I are at odds. I am critical of JavaScript. Or maybe more accurately, I’m critical of how we’ve developed a tendency to view it as a first resort to building for the web…

read more

Victor Zhou victorzhou.com

Why I replaced Disqus and you should too

Victor Zhou: Switching away from Disqus reduced my page weight by over 10x and my network requests by over 6x. Disqus is bloated and sells your data - there are much better alternatives out there. Disqus has been the de facto comment engine used for dev blogging (especially for SSGs) for years. I’m happy to learn there are less bloated and privacy-focused alternatives out there.

read more

Cloudflare Blog Icon Cloudflare Blog

1.1.1.1 + Warp

Cloudflare just launched a VPN for people who don’t know what V.P.N. stands for. …we think the market for VPNs as it’s been imagined to date is severely limited. Imagine trying to convince a non-technical friend that they should install an app that will slow down their Internet and drain their battery so they can be a bit more secure. Good luck. What’s interesting is the patience they’ve demonstrated with this launch. They first had to learn a thing or two about… …the failure conditions when a VPN app switched between cellular and WiFi, when it suffered signal degradation, tried to register with a captive portal, or otherwise ran into the different conditions that mobile phones experience in the field. The basic version of Warp is free. To put folks at ease (cause they’re a for-profit company), they’ve been transparent about their motives and shared “three primary ways this makes financial sense” for them.

read more

 Itamar Turner-Trauring pythonspeed.com

10× faster database tests with Docker

Testing code that talks to the database can be slow. Fakes are fast but unrealistic. What to do? With a little help from Docker, you can write tests that run fast, use the real database, are easy to write and run. I tried Itamar’s technique on changelog.com’s test suite and the 679 tests complete in ~17 seconds. The same tests run directly against Postgres complete in ~12 seconds. A net loss for me, but that may have something to do with how Docker for Mac works? I’d love to hear other people’s experiences.

read more

Bits and Pieces Icon Bits and Pieces

Understanding Service Workers and caching strategies

Solid tutorial on Service Workers: You can think of the service worker as someone who sits between the client and server and all the requests that are made to the server pass through the service worker. Basically, a middle man. Since all the request pass through the service worker, it is capable to intercept these requests on the fly.

read more

Go robustperception.io

Optimising startup time of Prometheus 2.6.0 with pprof

Brian Brazil: The informal design goal of the Prometheus 2.x TSDB startup was that it should take no more than about a minute. Over the past few months there’s been reports of it taking quite a bit more than this, which is a problem if your Prometheus restarts for some reason. Almost all of that time is loading the WAL (write ahead log), which are the samples in the last few hours which have yet to be compacted into a block. I finally got a chance to dig into this at the end of October, and the outcome was PR#440 which reduced CPU time by 6.5x and walltime by 4x. Let’s look at how I arrived at these improvements. I’ve been meaning to get more familiar with pprof, the Go profiling tool, as my job revolves around working on and around Go microservices. My team has been able to see the impact of the Go experts who can quickly find issues buried in a stack of profiles collected on a service. Brian’s post is a great example of 1) identifying the an issue, 2) diagnosing said issue and 3) observing the implemented improvements using pprof. His parting paragraph is particularly insightful, specifically: I did spend quite a bit of time pouring over the code, and had several dead ends such as removing the call to NumSamples, doing reading and decoding in separate threads, and a few variants of how the processWALSamples sharding worked Profiling and optimization is a mix of knowing your codebase and being able to identifying false leads. A tool like pprof is invaluable when identifying both issues and improvements in a measurable way.

read more

Scott Jehl filamentgroup.com

Inlining or caching? Both please!

I was exploring patterns that enable the browser to render a page as fast as possible by including code alongside the initial HTML so that the browser has everything it needs to start rendering the page, without making additional requests. Our two go-to options to achieve this goal are inlining and server push (more on how we use those), but each has drawbacks: inlining prevents a file from being cached for reuse, and server push is still a bit experimental, with some browser bugs still being worked out. As I was preparing to describe these caveats, I thought, “I wonder if the new Service Worker and Caching APIs could enable caching for inline code.” I’ve been dabbling a bit with service workers over on Brightly Colored to improve the loading time, so this exploration of caching inline CSS is fascinating. In fact, I used to completely inline all the CSS on the site, but switched to a file request because of the way I thought service workers, well… worked. Surprisingly, this implementation doesn’t look too difficult.

read more

JavaScript blog.mgechev.com

Guess.js - a toolkit for enabling data-driven user-experiences on the web

Our goal with Guess.js is to minimize your bundle layout configuration, make it data-driven, and much more accurate! In the end, you should lazy load all your routes and Guess.js will figure out which bundles to be combined together and what pre-fetching mechanism to be used! All this in less than 5 minutes setup time. That’s an excellent goal! But how will that work? During the build process, the GuessPlugin will fetch report from Google Analytics, build a model used for predictive pre-fetching and add a small runtime to the main bundle of your application. On route change, the runtime will query the generated model for the pages that are likely to be visited next and pre-fetch the associated with them JavaScript bundles. The tool was announced at Google I/O back in May, but as of today it’s still in alpha.

read more

Noa Gruman blog.streamroot.io

Implementing a multi-CDN strategy? Here's everything you need to know.

There’s some seriously interesting thoughts shared here for building out a multi-CDN strategy. Having had issues with how to best use and leverage a CDN to get the best performance benefits, I can see how having a multi-CDN implementation would allow us to choose the right CDN for a given region of the world, as well as a whole host of other options based on things like cost, performance, and of course redundancy for when things go wrong. Murphy’s law, right? This summer, the 2018 World Cup set an all-time streaming record – tripling its own 2014 record – with over 22 Tbps measured by Akamai at peak, but the event wasn’t smooth sailing for everyone. In a highly competitive market, and in an age where streaming failures make headlines, redundancy and quality of experience have never been more crucial for content publishers. Drop a comment below if there are other resources out there on this subject that we should check out.

read more

0:00 / 0:00