From dc503abd1b3c95ef9a4231575ad52a7fade34cab Mon Sep 17 00:00:00 2001 From: Lachlan Deakin Date: Tue, 23 Jul 2024 12:06:04 +1000 Subject: [PATCH] Update benchmarks and add plots --- CHANGELOG.md | 1 + Cargo.toml | 4 + docs/benchmark_read_all.csv | 6 + docs/benchmark_read_all.md | 5 + docs/benchmark_read_all.pdf | Bin 0 -> 95544 bytes docs/benchmark_read_all.svg | 2034 ++++++++++++++++++++++ docs/benchmark_read_chunks.csv | 21 + docs/benchmark_read_chunks.md | 20 + docs/benchmark_read_chunks.pdf | Bin 0 -> 96431 bytes docs/benchmark_read_chunks.svg | 2354 ++++++++++++++++++++++++++ docs/benchmarks.md | 45 +- scripts/plot_benchmarks.py | 158 ++ scripts/run_benchmark_read_all.py | 13 +- scripts/run_benchmark_read_chunks.py | 14 +- 14 files changed, 4640 insertions(+), 35 deletions(-) create mode 100644 docs/benchmark_read_all.csv create mode 100644 docs/benchmark_read_all.md create mode 100644 docs/benchmark_read_all.pdf create mode 100644 docs/benchmark_read_all.svg create mode 100644 docs/benchmark_read_chunks.csv create mode 100644 docs/benchmark_read_chunks.md create mode 100644 docs/benchmark_read_chunks.pdf create mode 100644 docs/benchmark_read_chunks.svg create mode 100644 scripts/plot_benchmarks.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b46e10..c91dc37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - `zarrs_reencode`: revise output and update docs + - Update benchmarks and add plots ## [0.5.2] - 2024-07-10 diff --git a/Cargo.toml b/Cargo.toml index cba71a5..59d5271 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,6 +10,10 @@ repository = "https://github.com/LDeakin/zarrs_tools" license = "MIT OR Apache-2.0" keywords = ["zarr"] categories = ["command-line-utilities", "encoding"] +excludes = [ + "docs/*.pdf", + "docs/*.csv" +] [features] async = ["zarrs/async", "zarrs/object_store", "zarrs/opendal", "dep:object_store", "dep:opendal"] diff --git a/docs/benchmark_read_all.csv b/docs/benchmark_read_all.csv new file mode 100644 index 0000000..df8e96e --- /dev/null +++ b/docs/benchmark_read_all.csv @@ -0,0 +1,6 @@ +Metric,Time (s),Time (s),Time (s),Memory (GB),Memory (GB),Memory (GB) +Implementation,zarrs_rust,tensorstore_python,zarr_python,zarrs_rust,tensorstore_python,zarr_python +Image,,,,,, +data/benchmark.zarr,2.55,3.68,55.1,8.416708,8.600584,15.470324 +data/benchmark_compress.zarr,2.59,3.03,75.35,8.441368,8.573516,19.132372 +data/benchmark_compress_shard.zarr,1.63,2.02,37.79,8.636576,8.879424,27.328692 diff --git a/docs/benchmark_read_all.md b/docs/benchmark_read_all.md new file mode 100644 index 0000000..2ab9dbf --- /dev/null +++ b/docs/benchmark_read_all.md @@ -0,0 +1,5 @@ +| Image | Time (s)
zarrs
rust |
tensorstore
python |
zarr
python | Memory (GB)
zarrs
rust |
tensorstore
python |
zarr
python | +|:-----------------------------------|----------------------------:|----------------------------:|---------------------:|-------------------------------:|----------------------------:|---------------------:| +| data/benchmark.zarr | 2.55 | 3.68 | 55.10 | 8.42 | 8.60 | 15.47 | +| data/benchmark_compress.zarr | 2.59 | 3.03 | 75.35 | 8.44 | 8.57 | 19.13 | +| data/benchmark_compress_shard.zarr | 1.63 | 2.02 | 37.79 | 8.64 | 8.88 | 27.33 | \ No newline at end of file diff --git a/docs/benchmark_read_all.pdf b/docs/benchmark_read_all.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b4cdcb98e030ee636fcc398f3fe94e48bb31d0b5 GIT binary patch literal 95544 zcmafaV|1iV*KQ`ZJwb;vv27a@+qP{?Y-*L@KhDakRBcu5 zeRXxOeXYKmOkP-&hJltDmaJ?QP}%~^0H6oh8d$(`a|7s<-0h43bVB-0`c}5406KYn zQ)5Q}BhWzsz{?A3Y-9B4$o{_qL~U)H08IZl(5cB8SQr~R0oeW(Mckak6rJ>)i~-F5 zD&+N@oQxf804$#(ES;j6zLB|&DS-7qRtH-{MPny`Ch%BcQD7>@ZcYF?32R^qg8!L? z{xeGewEtH+4F7KdpLu^~?_dnf?%(w36pS5hogEB;^?c^90HBjGHZs>2v~>fXNDusD zWo8F3vaAcwb4pl&SpiwMySeuWfX53j0$8oT8D2`2xu+w zji#~uLrQ@I=b-J5oL|uWapELoz@RLgC|(vlOP#On_$efUVoX7v0f+Fru%V6;(@Uty z&&--borA+L9VHeI>H17%aSC@y+I}o$8t%OGI{}=UM8^g?uAC#3F}%bp4(w}t-S- z=@$4facZ8%wIiuEf|1Q?PB8e4KIU>hsk%NoKVe=c@LWILRp43WxE>J zpqr>T-dAicj=zHw$>il2B_RwEQ>TLDEC{HNhF+!Hx${|mEUmL@;6zC0RKa^i=);|K zghmv5OOmbZ-xFZU@+`q;Tc!UZf?A;t5iUwF!?zSahw!WExoVh)U`Q& zp0ko)zv`wS+w&B(N8YKds4m{^^u;r{o6%g?ZXPBuX3a%PqFK71T%TK|I3O=q3i|IA zsOTU`nY^amI$TfA#PdAA>o8eLPn|){eIkp3zigk;%z4Y2(wp0q5g46_Us$(fbpQ3- z4{Uaxz?gylKLg!yXs-;tyL(!&*e%Q0_4u6ZJuw60e;m6_4OOPZR+D%~^aTaf9EK-T zaNgUfSeNV1>A^-&$e7^sRaVu@7oQWxHirt2Yg3Kzb7SWFM&-j z8im%OnDa?nNAV-Wok9`{A`_L}!j$BmtXI~zZ4|L#W7KkEq!h_;itYA%tu5 zSi&$&N4JSfK>kDHPL$ad0uv%vY9!zFwE1JwInzvoJ?9&FrfLTi3}HfYZ&NTws%9q- z)3Ji}5HUZwTVTw(!5cB;?dtY!QH*P&uB#n(k*ApB-~70$~Z{~lBSh!RkbwKkBRn} zd$&JL?@S!sh;?i|XN%{f1LW;zUMS-=*Yj~kWT9k4FDar4nwNM`woPjP#IKBPN>g@~ z=8-Dm@i_G0z-%Yiawcew>qUNXFzw%kBk$WXWqNyZLvM^rN*EPZDOrw}j+_Y`14AT? z3R70aV3u^Fr;^BxdVsuJ@DsIvH5)B^F3|hYt?k+5>8RG>M!VnFU*kaam2UFHA_En@)#PCYe>ax{#ux!k*tr*q?@*Ya|)fw1s3xaV@h z%TmpX@WyFGrGg_Y09zd?*zShwC2d;loSdMK|Qi zh~5u#mNlMDKOqc-IZn0+C|jW^4KxC)e&HJ_k~GisT%!?Z=+UspZxMC=INEB&G{h_)|uyOV}EUX|;zQN_#2u_l)CXXjvHt_5L*Ws0YAw zSL>eM1Ow;y>|6I=4liyM6>YR1ExYHZP$(T@OpMl(6)VgKHlv#d+NBc{j(^T!=|oY! zsNSlN(*^4P84jYHl)S)vtk%?ZHgsd7v`R7HP()r|>#4$ECKe;f%I+Dk@f>U3x}N_Y zzUNJIbOSG14?b&(YAMk9Qmr|y$B)8dN-zt>)5fOmD4qn_OB$l3Bk9T5C6bh@aH(JQ z)U);1Ilr67pl(Vam-C6&Z}VA82R3+$z4{*bP$m0)-B!Q7&OoJmKrc^>xcL??vm)dGNXk2CK^j#cbdZ_!Zt&-sEQ@?qYEbvj-4#Y&+&vk}JBA+by4NFNm}3}vYl6QP z?Ad|~-@xQ0oPB9h5*0=;y7w?t+g=1z;KSo7E~1i89K@TNThHPHbDgGiA7IBJ+8BP` zt!HTCx0WjGX0r8wnm%NZ(@Px@7aIvDA|I-M3p^wowdhN_yQ-7~Z6kbn;9Etul(oUk zIjHSBz2Cat+COi2cpF2Ud$-E@dp)kn(yGxla_#bavttt^y2Wt=mmACOd`m54p`*8! z%QsAwLwoXMNk~1PNfE@KvvMT1!zTvX$PO0Yr)fDX8v-`8320FF2E34@lC76cjEpG11nBMn`ii6tPkfpO4)cF)7 z3_I57yS2f5&K>{1uIJto@lNMwe@#?NYqBJU13{Zf4+5PKa-=e&S`QD7ZUpvBU9?>b zPSa9j{+M<=(Z6`JcD!(B|5`Y7mHdaOeD+e=x zjhPWBGXU7wH~=i{OaN9^Rsbt-V>ULRoe8L8WdX1-umPBvnE}l7EC6OE;F^OKmYJ0U zz{J7?U}0nZH;$eWsAu}e&ca6jPYeqi!@n{!Q08C(urdM%3j=Tl`U1~k;a~u;GqS^e z?$7j@4+}G}OQ)y*zyC3^u>n2@3()lc8L z02>oKkV61*VQ2jZ4`wC~SQcPD?93bhR(5&-2e2k~`v2et#EgyOGahJT0Aj$-4D@0A z2L}!yPQaRgYak~9>X?9>1UO(n=l`jVnE_Zm(2JRo1BehXl93*W2oPO%p!|s_a4>x$ z4rE84HbxG106QBnLwb5xX5eWoz)YB#Spm#IG?`g}C$IwjfUnr6jSct;|ARa*!_PgL zfM_#)X2=BG7l_~|D*tmcKH1#o&G;Ys_{j-{jU5dg%IYl@@muAAlqkwwPI4TdVh%adnk&bq#TX7MBQf za?MwmE{LamWjo0B>~dUZXt!nmd1^Y2F_CFmVLC?05?q6uADR{jqc+{Oo`f>k+YN`T zC?ET!21HG5F;z`XEv}?wu3XEy>!Y4T(J~-QyA1EtJtq>`5i(GVh}Axp%IH@>AP@ii z7$%4j7zl^Ezg8PHHHZo(X7&f7lifZEDiry*DUPm@!bF_2&a#fs;Zcd zi3t)C5_xPETtZ-N@TL@`Ur16Z89&A;sEZ3!#uowu$nOECoxTJ8LDC5Fjdc!BF+yWq zt8-wx@R0oQ4Jw6to>+tEY@SS2OdvHp{4$~hzjmP;J|^^@KH&90UbFB)VqqRT_TIDK zs$!GgbQ1&$3lUwS0iJYJo^XE6Ni^8MNGT?EkB^2yK$bFi;K7$#*!lMZR|QlW0BD1L z9mRnl@x+uM$fUg;JB|#_4GvDu`VQ4K-l1_%`Z(g*WT#`jc&DeG_Z75*gGk_g<(XZD zv7??0AKq=O_lN}dydNU_D)%P)NcO4C9E_HWnjFpk#=Rc|U<^cj%ha6}Ac&YYw5&FW zAd4^{_ssQ1K8yToBPg#aXpee7!M6@}4mY9cLwdj5*D^v0y#rpF{8qa_R885cawZf9 za-eab!Bf@KT0o^cF;(sdV@ica^=>}'%<-9c~F01(jNRot&H8+2geQE42DD;_+E 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 z
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 + + + + + + + 2024-07-23T12:04:10.108371 + image/svg+xml + + + Matplotlib v3.9.1, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/benchmark_read_chunks.csv b/docs/benchmark_read_chunks.csv new file mode 100644 index 0000000..f0740d8 --- /dev/null +++ b/docs/benchmark_read_chunks.csv @@ -0,0 +1,21 @@ +Metric,,Time (s),Time (s),Time (s),Memory (GB),Memory (GB),Memory (GB) +Implementation,,zarrs_rust,tensorstore_python,zarr_python,zarrs_rust,tensorstore_python,zarr_python +Image,Concurrency,,,,,, +data/benchmark.zarr,1,31.36,54.15,84.0,0.024888,0.09856,0.101824 +data/benchmark.zarr,2,14.81,31.54,70.88,0.027884,0.303892,0.319608 +data/benchmark.zarr,4,7.98,24.5,70.64,0.02782,0.309732,0.31156 +data/benchmark.zarr,8,4.4,21.33,67.06,0.028216,0.315948,0.3139 +data/benchmark.zarr,16,2.49,20.13,60.28,0.02788,0.319788,0.316828 +data/benchmark.zarr,32,2.43,17.97,56.67,0.027004,0.32244,0.32038 +data/benchmark_compress.zarr,1,22.59,48.7,98.27000000000001,0.025168,0.095652,0.137304 +data/benchmark_compress.zarr,2,12.59,27.28,92.91,0.028636,0.31164,0.341512 +data/benchmark_compress.zarr,4,6.94,23.25,88.4,0.026848,0.312156,0.329352 +data/benchmark_compress.zarr,8,3.7,20.3,84.92,0.030676,0.32148,0.341864 +data/benchmark_compress.zarr,16,2.13,19.46,74.02,0.033564,0.343696,0.3422 +data/benchmark_compress.zarr,32,2.09,17.11,67.53,0.042712,0.352136,0.329524 +data/benchmark_compress_shard.zarr,1,2.17,3.19,26.26,0.367568,0.61508,1.202624 +data/benchmark_compress_shard.zarr,2,1.56,2.28,31.64,0.69766,0.92436,1.995284 +data/benchmark_compress_shard.zarr,4,1.4,2.02,33.23,1.29334,1.006748,3.623536 +data/benchmark_compress_shard.zarr,8,1.34,1.87,34.77,2.420176,1.350632,7.078324 +data/benchmark_compress_shard.zarr,16,1.29,1.84,38.82,4.524808,1.970588,13.787524 +data/benchmark_compress_shard.zarr,32,1.45,2.31,36.84,6.721488,2.370636,27.44894 diff --git a/docs/benchmark_read_chunks.md b/docs/benchmark_read_chunks.md new file mode 100644 index 0000000..b487998 --- /dev/null +++ b/docs/benchmark_read_chunks.md @@ -0,0 +1,20 @@ +| | Image | Concurrency | Time (s)
zarrs
rust |
tensorstore
python |
zarr
python | Memory (GB)
zarrs
rust |
tensorstore
python |
zarr
python | +|---:|:-----------------------------------|--------------:|----------------------------:|----------------------------:|---------------------:|-------------------------------:|----------------------------:|---------------------:| +| 0 | data/benchmark.zarr | 1 | 31.36 | 54.15 | 84.00 | 0.02 | 0.10 | 0.10 | +| 1 | data/benchmark.zarr | 2 | 14.81 | 31.54 | 70.88 | 0.03 | 0.30 | 0.32 | +| 2 | data/benchmark.zarr | 4 | 7.98 | 24.50 | 70.64 | 0.03 | 0.31 | 0.31 | +| 3 | data/benchmark.zarr | 8 | 4.40 | 21.33 | 67.06 | 0.03 | 0.32 | 0.31 | +| 4 | data/benchmark.zarr | 16 | 2.49 | 20.13 | 60.28 | 0.03 | 0.32 | 0.32 | +| 5 | data/benchmark.zarr | 32 | 2.43 | 17.97 | 56.67 | 0.03 | 0.32 | 0.32 | +| 6 | data/benchmark_compress.zarr | 1 | 22.59 | 48.70 | 98.27 | 0.03 | 0.10 | 0.14 | +| 7 | data/benchmark_compress.zarr | 2 | 12.59 | 27.28 | 92.91 | 0.03 | 0.31 | 0.34 | +| 8 | data/benchmark_compress.zarr | 4 | 6.94 | 23.25 | 88.40 | 0.03 | 0.31 | 0.33 | +| 9 | data/benchmark_compress.zarr | 8 | 3.70 | 20.30 | 84.92 | 0.03 | 0.32 | 0.34 | +| 10 | data/benchmark_compress.zarr | 16 | 2.13 | 19.46 | 74.02 | 0.03 | 0.34 | 0.34 | +| 11 | data/benchmark_compress.zarr | 32 | 2.09 | 17.11 | 67.53 | 0.04 | 0.35 | 0.33 | +| 12 | data/benchmark_compress_shard.zarr | 1 | 2.17 | 3.19 | 26.26 | 0.37 | 0.62 | 1.20 | +| 13 | data/benchmark_compress_shard.zarr | 2 | 1.56 | 2.28 | 31.64 | 0.70 | 0.92 | 2.00 | +| 14 | data/benchmark_compress_shard.zarr | 4 | 1.40 | 2.02 | 33.23 | 1.29 | 1.01 | 3.62 | +| 15 | data/benchmark_compress_shard.zarr | 8 | 1.34 | 1.87 | 34.77 | 2.42 | 1.35 | 7.08 | +| 16 | data/benchmark_compress_shard.zarr | 16 | 1.29 | 1.84 | 38.82 | 4.52 | 1.97 | 13.79 | +| 17 | data/benchmark_compress_shard.zarr | 32 | 1.45 | 2.31 | 36.84 | 6.72 | 2.37 | 27.45 | \ No newline at end of file diff --git a/docs/benchmark_read_chunks.pdf b/docs/benchmark_read_chunks.pdf new file mode 100644 index 0000000000000000000000000000000000000000..fc6274efcd5e8fad3aa9c518c5b4655055ae3680 GIT binary patch literal 96431 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 + + + + + + + 2024-07-23T12:04:11.966047 + image/svg+xml + + + Matplotlib v3.9.1, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/benchmarks.md b/docs/benchmarks.md index 3d86253..4b76a75 100644 --- a/docs/benchmarks.md +++ b/docs/benchmarks.md @@ -28,10 +28,10 @@ Benchmark data is generated with `scripts/generate_benchmark_array.py` as follow - Ubuntu 22.04 (in Windows 11 WSL2, swap disabled, 32GB available memory) ## Implementations Benchmarked -- [`LDeakin/zarrs`](https://github.com/LDeakin/zarrs) v0.15.0-beta.1 (Rust 1.79.0) via [`LDeakin/zarrs_tools`](https://github.com/LDeakin/zarrs_tools) 0.4.3 (81c580e) +- [`LDeakin/zarrs`](https://github.com/LDeakin/zarrs) v0.15.0 (Rust 1.79.0) via [`LDeakin/zarrs_tools`](https://github.com/LDeakin/zarrs_tools) 0.5.2 (b458067) - Benchmark executable: [zarrs_benchmark_read_sync](https://github.com/LDeakin/zarrs_tools/blob/main/src/bin/zarrs_benchmark_read_sync.rs) - - Benchmark executable: [zarrs_benchmark_read_async](https://github.com/LDeakin/zarrs_tools/blob/main/src/bin/zarrs_benchmark_read_async.rs) -- [`google/tensorstore`](https://github.com/google/tensorstore) v0.1.61 (Python 3.12.3) + - ~~Benchmark executable: [zarrs_benchmark_read_async](https://github.com/LDeakin/zarrs_tools/blob/main/src/bin/zarrs_benchmark_read_async.rs)~~ +- [`google/tensorstore`](https://github.com/google/tensorstore) v0.1.63 (Python 3.12.3) - Benchmark script: - [`zarr-developers/zarr-python`](https://github.com/zarr-developers/zarr-python) 3.0.0a0 (Python 3.12.3) - Benchmark script: @@ -50,11 +50,13 @@ This benchmark measures the minimum time and memory used to read an entire datas python3 ./scripts/run_benchmark_read_all.py ``` -| Image | Time (s)
zarrs
rust |
zarrs
rust
async |
tensorstore
python |
zarr
python | Memory (GB)
zarrs
rust |
zarrs
rust
async |
tensorstore
python |
zarr
python | -|:-----------------------------------|----------------------------:|-----------------------------:|----------------------------:|---------------------:|-------------------------------:|-----------------------------:|----------------------------:|---------------------:| -| data/benchmark.zarr | 2.84 | 9.79 | 3.10 | 49.70 | 8.42 | 8.40 | 8.60 | 15.52 | -| data/benchmark_compress.zarr | 2.70 | 13.86 | 2.69 | 70.55 | 8.44 | 8.41 | 8.54 | 19.14 | -| data/benchmark_compress_shard.zarr | 1.37 | 2.21 | 2.11 | 35.09 | 8.64 | 8.57 | 8.94 | 27.33 | + > [!IMPORTANT] + > `zarr-python` does not use multiple cores with an `array[:]` call. + > This benchmark needs to be reevaluated when `zarr-python` v3 supports multithreading directly or through a supporting library (e.g. `dask` via `xarray`). + +![read all benchmark image](./benchmark_read_all.svg) + +[Table of raw measurements (benchmarks_read_all.md)](./benchmark_read_all.md) ### Chunk-By-Chunk @@ -66,26 +68,13 @@ This benchmark measures the the minimum time and memory to read a dataset chunk- python3 ./scripts/run_benchmark_read_chunks.py ``` -| Image | Concurrency | Time (s)
zarrs
rust |
zarrs
rust
async |
tensorstore
python |
zarr
python | Memory (GB)
zarrs
rust |
zarrs
rust
async |
tensorstore
python |
zarr
python | -|:-----------------------------------|--------------:|----------------------------:|-----------------------------:|----------------------------:|---------------------:|-------------------------------:|-----------------------------:|----------------------------:|---------------------:| -| data/benchmark.zarr | 1 | 28.55 | 55.48 | 51.17 | 81.21 | 0.02 | 0.01 | 0.10 | 0.10 | -| data/benchmark.zarr | 2 | 16.08 | 32.79 | 29.85 | 66.76 | 0.03 | 0.02 | 0.31 | 0.32 | -| data/benchmark.zarr | 4 | 8.49 | 18.02 | 23.13 | 66.23 | 0.03 | 0.02 | 0.31 | 0.31 | -| data/benchmark.zarr | 8 | 4.59 | 10.49 | 20.36 | 64.06 | 0.03 | 0.02 | 0.31 | 0.31 | -| data/benchmark.zarr | 16 | 2.84 | 8.42 | 18.84 | 57.60 | 0.03 | 0.02 | 0.33 | 0.32 | -| data/benchmark.zarr | 32 | 2.83 | 7.94 | 16.80 | 53.58 | 0.03 | 0.03 | 0.33 | 0.32 | -| data/benchmark_compress.zarr | 1 | 20.53 | 36.31 | 45.32 | 93.08 | 0.03 | 0.02 | 0.10 | 0.14 | -| data/benchmark_compress.zarr | 2 | 12.37 | 19.87 | 26.66 | 86.26 | 0.03 | 0.02 | 0.31 | 0.34 | -| data/benchmark_compress.zarr | 4 | 7.21 | 11.16 | 22.19 | 85.91 | 0.03 | 0.02 | 0.31 | 0.33 | -| data/benchmark_compress.zarr | 8 | 3.92 | 7.34 | 19.56 | 79.25 | 0.03 | 0.03 | 0.33 | 0.33 | -| data/benchmark_compress.zarr | 16 | 2.33 | 7.13 | 18.29 | 70.87 | 0.03 | 0.04 | 0.32 | 0.33 | -| data/benchmark_compress.zarr | 32 | 2.29 | 6.90 | 16.41 | 65.28 | 0.04 | 0.07 | 0.34 | 0.33 | -| data/benchmark_compress_shard.zarr | 1 | 2.06 | 2.08 | 3.24 | 25.45 | 0.37 | 0.37 | 0.63 | 1.17 | -| data/benchmark_compress_shard.zarr | 2 | 1.49 | 1.54 | 2.29 | 29.03 | 0.70 | 0.70 | 0.88 | 1.95 | -| data/benchmark_compress_shard.zarr | 4 | 1.37 | 1.35 | 1.96 | 31.36 | 1.30 | 1.30 | 1.12 | 3.61 | -| data/benchmark_compress_shard.zarr | 8 | 1.27 | 1.32 | 1.91 | 33.57 | 2.30 | 2.17 | 1.97 | 6.99 | -| data/benchmark_compress_shard.zarr | 16 | 1.28 | 1.32 | 1.90 | 34.94 | 4.55 | 3.73 | 1.82 | 13.78 | -| data/benchmark_compress_shard.zarr | 32 | 1.34 | 1.52 | 2.22 | 35.25 | 6.93 | 6.71 | 2.82 | 27.38 | + > [!IMPORTANT] + > `zarr-python` does not seem to scale up with multiple concurrent chunk requests and uses far more memory than competing implementations. + > This needs to be reviewed. + +![read chunks benchmark image](./benchmark_read_chunks.svg) + +[Table of raw measurements (benchmarks_read_chunks.md)](./benchmark_read_chunks.md) ## Round Trip Benchmarks TODO diff --git a/scripts/plot_benchmarks.py b/scripts/plot_benchmarks.py new file mode 100644 index 0000000..3ea92bb --- /dev/null +++ b/scripts/plot_benchmarks.py @@ -0,0 +1,158 @@ +#!/usr/bin/env python3 + +import matplotlib.pyplot as plt +import pandas as pd +# from matplotlib._layoutgrid import plot_children +from matplotlib.lines import Line2D + +plt.rcParams.update({ + "text.usetex": True, + "font.family": "sans-serif", + "font.sans-serif": ["lmodern"]} +) + +implementations = { + "zarrs_rust": "LDeakin/zarrs (0.15.0)", + "tensorstore_python": "google/tensorstore (0.1.63)", + "zarr_python": "zarr-developers/zarr-python (3.0.0a0)" +} + +images = { + "data/benchmark.zarr": "Uncompressed", + "data/benchmark_compress.zarr": "Compressed", + "data/benchmark_compress_shard.zarr": "Compressed\n + Sharded", +} + +def split_axis(ax_h, ax_l): + ax_h.spines.bottom.set_visible(False) + ax_l.spines.top.set_visible(False) + ax_h.xaxis.tick_top() + ax_h.tick_params(labeltop=False) # don't put tick labels at the top + ax_l.xaxis.tick_bottom() + + d = .5 # proportion of vertical to horizontal extent of the slanted line + kwargs = dict(marker=[(-1, -d), (1, d)], markersize=12, + linestyle="none", color='k', mec='k', mew=1, clip_on=False) + ax_h.plot([0, 1], [0, 0], transform=ax_h.transAxes, **kwargs) + ax_l.plot([0, 1], [1, 1], transform=ax_l.transAxes, **kwargs) + +def plot_read_all(): + df = pd.read_csv("docs/benchmark_read_all.csv", header=[0, 1], index_col=0) + df.index = ["Uncompressed", "Compressed", "Compressed\n+ Sharded"] + df.rename(level=1, columns=implementations, inplace=True) + print(df) + + + # Prepare split axis figure and axes + fig = plt.figure(figsize=(9, 4), layout="constrained") + spec = fig.add_gridspec(2, 2, hspace=0.005) + fig.get_layout_engine().set(h_pad = 0) + ax_time = fig.add_subplot(spec[:, 0], frameon=False) + ax_time_h = fig.add_subplot(spec[0, 0]) + ax_time_l = fig.add_subplot(spec[1, 0]) + ax_mem = fig.add_subplot(spec[:, 1]) + split_axis(ax_time_h, ax_time_l) + # plot_children(fig) + + # Plot the data + df["Time (s)"].plot(kind='bar', ax=ax_time_h) + fig.legend(loc='outside upper center', ncol=3, title="Zarr V3 implementation", borderaxespad=0) + df["Time (s)"].plot(kind='bar', ax=ax_time_l) + df["Memory (GB)"].plot(kind='bar', ax=ax_mem) + + # Adjust limits + ax_time_l.set_ylim(0, 4) + ax_time_h.set_ylim(20, 80) + ax_mem.set_ylim(0, 30) + + # Styling + ax_time.tick_params(labelcolor='none', which='both', top=False, bottom=False, left=False, right=False) + ax_time.set_ylabel("Elapsed time (s)") + ax_time_h.set_ylabel("Phony", color='none') + ax_mem.set_ylabel("Peak memory usage (GB)") + ax_time_l.tick_params(axis='x', labelrotation=0) + ax_mem.tick_params(axis='x', labelrotation=0) + + ax_time_l.get_legend().remove() + ax_time_h.get_legend().remove() + ax_mem.get_legend().remove() + + fig.savefig("docs/benchmark_read_all.svg") + fig.savefig("docs/benchmark_read_all.pdf") + +def interleave_repeat_list(lst, n): + # Interleave the list n times + interleaved_list = [item for item in lst for _ in range(n)] + return interleaved_list + +def plot_read_chunks(): + df = pd.read_csv("docs/benchmark_read_chunks.csv", header=[0, 1], index_col=[0, 1]) + # df.assign(Concurrency=df.index.get_level_values('Concurrency')) + df = df.reset_index(level=1) + print(df) + + fig = plt.figure(figsize=(9, 4), layout="constrained") + spec = fig.add_gridspec(2, 2, hspace=0.005) + fig.get_layout_engine().set(h_pad = 0) + ax_time_h = fig.add_subplot(spec[0, 0]) + ax_time_l = fig.add_subplot(spec[1, 0]) + ax_mem = fig.add_subplot(spec[:, 1]) + split_axis(ax_time_h, ax_time_l) + + cmap = plt.rcParams['axes.prop_cycle'].by_key()['color'][:3] + print(df.groupby("Image")) + image_ls = {'data/benchmark.zarr': ":", 'data/benchmark_compress.zarr': '--', 'data/benchmark_compress_shard.zarr': '-'} + for image, row in df.groupby("Image"): + row.plot(x="Concurrency", y="Time (s)", ax=ax_time_h, color=cmap, ls=image_ls[image]) + row.plot(x="Concurrency", y="Time (s)", ax=ax_time_l, color=cmap, ls=image_ls[image]) + row.plot(x="Concurrency", y="Memory (GB)", ax=ax_mem, color=cmap, ls=image_ls[image]) + print(row) + + # Custom legend + cmap = plt.rcParams['axes.prop_cycle'].by_key()['color'] + custom_lines = [Line2D([0], [0], color=cmap[0]), + Line2D([0], [0], color=cmap[1]), + Line2D([0], [0], color=cmap[2])] + fig.legend(custom_lines, [implementation.replace(" ", " ") for implementation in implementations.values()], loc="outside upper left", ncol=2, title="Zarr V3 implementation", borderaxespad=0) + custom_lines = [Line2D([0], [0], color='k', ls=':'), + Line2D([0], [0], color='k', ls='--'), + Line2D([0], [0], color='k', ls='-')] + fig.legend(custom_lines, images.values(), loc="outside upper right", ncol=2, title="Dataset", borderaxespad=0) + + ax_time_h.get_legend().remove() + ax_time_l.get_legend().remove() + ax_mem.get_legend().remove() + + ax_all = fig.add_subplot(spec[1, :], frameon=False) + ax_all.tick_params(labelcolor='none', which='both', top=False, bottom=False, left=False, right=False) + ax_all.set_xlabel("Concurrent chunks") + + ax_time = fig.add_subplot(spec[:, 0], frameon=False) + ax_time.tick_params(labelcolor='none', which='both', top=False, bottom=False, left=False, right=False) + ax_time.set_ylabel("Elapsed time (s)") + + ax_mem.set_ylim(0, 30) + ax_time_h.set_ylim(4, 110) + ax_time_h.set_yticks([10, 30, 50, 70, 90, 110]) + ax_time_l.set_ylim(0, 4) + ax_time_l.set_yticks([0, 1, 2, 3, 4]) + ax_mem.set_xlim(1, 32) + ax_time_h.set_xlim(1, 32) + ax_time_l.set_xlim(1, 32) + ax_mem.set_xticks([1, 2, 4, 8, 16, 32]) + ax_time_h.set_xticks([1, 2, 4, 8, 16, 32]) + ax_time_l.set_xticks([1, 2, 4, 8, 16, 32]) + ax_time_h.set_xlabel(None) + ax_time_l.set_xlabel(None) + ax_mem.set_xlabel(None) + ax_mem.set_ylabel("Peak memory usage (GB)") + + fig.savefig("docs/benchmark_read_chunks.svg") + fig.savefig("docs/benchmark_read_chunks.pdf") + + +if __name__ == "__main__": + plot_read_all() + plot_read_chunks() + +plt.show() diff --git a/scripts/run_benchmark_read_all.py b/scripts/run_benchmark_read_all.py index 2ada637..2ae9219 100755 --- a/scripts/run_benchmark_read_all.py +++ b/scripts/run_benchmark_read_all.py @@ -18,7 +18,7 @@ def clear_cache(): implementations = [ "zarrs_rust", - "zarrs_rust_async", + # "zarrs_rust_async", "tensorstore_python", "zarr_python", ] @@ -108,8 +108,15 @@ def clear_cache(): # print(data) +# Print and save as CSV df = pd.DataFrame.from_dict(data, orient="tight") print(df) print() -df.columns = columns_markdown -print(df.to_markdown(floatfmt=".02f")) +df.to_csv("docs/benchmark_read_all.csv") + +# Print and save markdown +df_markdown = df.copy() +df_markdown.columns = columns_markdown +print(df_markdown.to_markdown(floatfmt=".02f")) +df_markdown.to_markdown("docs/benchmark_read_all.md", floatfmt=".02f") + diff --git a/scripts/run_benchmark_read_chunks.py b/scripts/run_benchmark_read_chunks.py index d25a807..0347be7 100755 --- a/scripts/run_benchmark_read_chunks.py +++ b/scripts/run_benchmark_read_chunks.py @@ -17,7 +17,7 @@ def clear_cache(): implementations = [ "zarrs_rust", - "zarrs_rust_async", + # "zarrs_rust_async", "tensorstore_python", "zarr_python", ] @@ -101,9 +101,15 @@ def clear_cache(): # print(data) +# Print and save as CSV df = pd.DataFrame.from_dict(data, orient="tight") print(df) print() -df.columns = columns_markdown -df.reset_index(inplace=True) -print(df.to_markdown(index=False, floatfmt=".02f")) +df.to_csv("docs/benchmark_read_chunks.csv") + +# Print and save markdown +df_markdown = df.copy() +df_markdown.columns = columns_markdown +df_markdown.reset_index(inplace=True) +print(df_markdown.to_markdown(index=False, floatfmt=".02f")) +df_markdown.to_markdown("docs/benchmark_read_chunks.md", floatfmt=".02f")