speed of current laptops

2019-10-27

2023 update:

I lost my wonderful Lenovo X1 Carbon due to a fried motherboard, likely due to too much fiddling with a flaky charger, instead of just caving and buying a replacement. The cost of this motherboard was greater than the laptop itself, a sad state of affairs which makes me wish for a Framework Laptop.

I also lost access to the UX410, due to change of jobs.

I decided to get me my dream laptop, a Lenovo X1 Carbon (code 20KGS3X910). It has amazing keyboard (as promised) as well as amazing touchpad. The performance is sad though, less than my work laptop, an Asus UX410 (itself a replacement of the UX305 whose battery circuitry got fried).

To check performance, I used Rust JSON Benchmark:

git clone https://github.com/serde-rs/json-benchmark
cd json-benchmark
git checkout 1d4986c2083c8f164f86116f19d70dd32b7519bf
rustup default 1.38.0
cargo run --release --bin json-benchmark

Results for the X1 Carbon:

                                DOM                  STRUCT
======= serde_json ======= parse|stringify ===== parse|stringify ====
data/canada.json         140 MB/s   290 MB/s   340 MB/s   230 MB/s
data/citm_catalog.json   240 MB/s   390 MB/s   560 MB/s   530 MB/s
data/twitter.json        170 MB/s   530 MB/s   380 MB/s   540 MB/s

======= json-rust ======== parse|stringify ===== parse|stringify ====
data/canada.json         310 MB/s   600 MB/s
data/citm_catalog.json   440 MB/s   500 MB/s
data/twitter.json        310 MB/s   620 MB/s

==== rustc_serialize ===== parse|stringify ===== parse|stringify ====
data/canada.json          98 MB/s    39 MB/s    71 MB/s    30 MB/s
data/citm_catalog.json   110 MB/s   130 MB/s    81 MB/s   140 MB/s
data/twitter.json         61 MB/s   250 MB/s    49 MB/s   260 MB/s

======= simd-json ======== parse|stringify ===== parse|stringify ====
data/canada.json         250 MB/s   320 MB/s   420 MB/s
data/citm_catalog.json   650 MB/s   470 MB/s   920 MB/s
data/twitter.json        520 MB/s   530 MB/s   620 MB/s

Results for the UX410:

                                DOM                  STRUCT
======= serde_json ======= parse|stringify ===== parse|stringify ====
data/canada.json         240 MB/s   510 MB/s   570 MB/s   390 MB/s
data/citm_catalog.json   370 MB/s   680 MB/s   920 MB/s   890 MB/s
data/twitter.json        290 MB/s   900 MB/s   640 MB/s   920 MB/s

======= json-rust ======== parse|stringify ===== parse|stringify ====
data/canada.json         500 MB/s   990 MB/s
data/citm_catalog.json   700 MB/s   860 MB/s
data/twitter.json        520 MB/s  1030 MB/s

==== rustc_serialize ===== parse|stringify ===== parse|stringify ====
data/canada.json         160 MB/s    65 MB/s   120 MB/s    51 MB/s
data/citm_catalog.json   170 MB/s   210 MB/s   120 MB/s   240 MB/s
data/twitter.json        100 MB/s   410 MB/s    80 MB/s   440 MB/s

======= simd-json ======== parse|stringify ===== parse|stringify ====
data/canada.json         380 MB/s   490 MB/s   650 MB/s
data/citm_catalog.json  1000 MB/s   790 MB/s  1540 MB/s
data/twitter.json        870 MB/s   900 MB/s  1030 MB/s