From 77f6ff4a5b8cd4e826689879038fcc6d9c1baa78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Wiewi=C3=B3rka?= Date: Sun, 12 Jan 2025 16:52:19 +0100 Subject: [PATCH] chore: Dataframe results update (#67) --- .../mprofile_polars-bio-overlap-native.dat | 52 ++++++++ .../mprofile_polars-bio-overlap-pd.dat | 123 ++++++++++++++++++ .../mprofile_polars-bio-overlap-pl.dat | 108 +++++++++++++++ .../dataframes/polars-bio-overlap-mem.png | Bin 0 -> 31242 bytes .../dataframes/polars-bio-overlap-pd-mem.png | Bin 0 -> 34385 bytes .../dataframes/polars-bio-overlap-pl-mem.png | Bin 0 -> 35385 bytes docs/performance.md | 45 ++++--- 7 files changed, 313 insertions(+), 15 deletions(-) create mode 100644 benchmark/results/memory/dataframes/mprofile_polars-bio-overlap-native.dat create mode 100644 benchmark/results/memory/dataframes/mprofile_polars-bio-overlap-pd.dat create mode 100644 benchmark/results/memory/dataframes/mprofile_polars-bio-overlap-pl.dat create mode 100644 docs/assets/memory/dataframes/polars-bio-overlap-mem.png create mode 100644 docs/assets/memory/dataframes/polars-bio-overlap-pd-mem.png create mode 100644 docs/assets/memory/dataframes/polars-bio-overlap-pl-mem.png diff --git a/benchmark/results/memory/dataframes/mprofile_polars-bio-overlap-native.dat b/benchmark/results/memory/dataframes/mprofile_polars-bio-overlap-native.dat new file mode 100644 index 0000000..12f8744 --- /dev/null +++ b/benchmark/results/memory/dataframes/mprofile_polars-bio-overlap-native.dat @@ -0,0 +1,52 @@ +CMDLINE /Users/mwiewior/research/git/polars-bio/.venv/bin/python benchmark/src/bench_overlap_dataframes.py +MEM 0.390625 1736695138.8088 +MEM 41.359375 1736695138.9139 +MEM 78.406250 1736695139.0191 +MEM 112.171875 1736695139.1243 +MEM 138.890625 1736695139.2260 +MEM 171.718750 1736695139.3311 +MEM 502.031250 1736695139.4330 +MEM 474.468750 1736695139.5382 +MEM 796.531250 1736695139.6385 +MEM 1127.093750 1736695139.7437 +MEM 1446.031250 1736695139.8480 +MEM 1796.734375 1736695139.9532 +MEM 2130.640625 1736695140.0573 +MEM 2432.750000 1736695140.1592 +MEM 2780.500000 1736695140.2637 +MEM 3129.093750 1736695140.3660 +MEM 3456.156250 1736695140.4669 +MEM 3736.437500 1736695140.5688 +MEM 4099.515625 1736695140.6721 +MEM 4456.875000 1736695140.7743 +MEM 4809.687500 1736695140.8764 +MEM 5176.546875 1736695140.9796 +MEM 5541.468750 1736695141.0836 +MEM 5927.250000 1736695141.1887 +MEM 6306.687500 1736695141.2928 +MEM 6660.359375 1736695141.3971 +MEM 7046.593750 1736695141.5002 +MEM 7430.468750 1736695141.6037 +MEM 7802.187500 1736695141.7089 +MEM 8146.093750 1736695141.8141 +MEM 8495.640625 1736695141.9192 +MEM 8843.718750 1736695142.0244 +MEM 9128.046875 1736695142.1256 +MEM 9469.875000 1736695142.2308 +MEM 9782.453125 1736695142.3321 +MEM 10134.781250 1736695142.4335 +MEM 10494.609375 1736695142.5370 +MEM 10823.406250 1736695142.6422 +MEM 11191.265625 1736695142.7474 +MEM 11538.671875 1736695142.8509 +MEM 11861.328125 1736695142.9561 +MEM 12236.875000 1736695143.0613 +MEM 12616.562500 1736695143.1665 +MEM 12996.218750 1736695143.2717 +MEM 13385.500000 1736695143.3769 +MEM 13762.515625 1736695143.4821 +MEM 14108.703125 1736695143.5872 +MEM 14445.093750 1736695143.6924 +MEM 14671.281250 1736695143.7976 +MEM 14671.437500 1736695143.9005 +MEM 14671.437500 1736695144.0057 diff --git a/benchmark/results/memory/dataframes/mprofile_polars-bio-overlap-pd.dat b/benchmark/results/memory/dataframes/mprofile_polars-bio-overlap-pd.dat new file mode 100644 index 0000000..b2137da --- /dev/null +++ b/benchmark/results/memory/dataframes/mprofile_polars-bio-overlap-pd.dat @@ -0,0 +1,123 @@ +CMDLINE /Users/mwiewior/research/git/polars-bio/.venv/bin/python benchmark/src/bench_overlap_dataframes.py +MEM 0.187500 1736695255.7995 +MEM 41.390625 1736695255.9046 +MEM 78.718750 1736695256.0106 +MEM 113.156250 1736695256.1150 +MEM 138.984375 1736695256.2196 +MEM 172.750000 1736695256.3215 +MEM 474.203125 1736695256.4248 +MEM 735.046875 1736695256.5299 +MEM 678.234375 1736695256.6333 +MEM 754.515625 1736695256.7385 +MEM 962.453125 1736695256.8404 +MEM 1091.437500 1736695256.9456 +MEM 1143.437500 1736695257.0493 +MEM 1191.875000 1736695257.1543 +MEM 1240.953125 1736695257.2571 +MEM 1299.359375 1736695257.3595 +MEM 1338.203125 1736695257.4647 +MEM 1405.578125 1736695257.5698 +MEM 1473.609375 1736695257.6722 +MEM 1541.531250 1736695257.7748 +MEM 2071.843750 1736695257.8780 +MEM 1641.328125 1736695257.9826 +MEM 1703.281250 1736695258.0847 +MEM 1762.968750 1736695258.1875 +MEM 1824.656250 1736695258.2904 +MEM 1882.328125 1736695258.3939 +MEM 1944.890625 1736695258.4955 +MEM 2008.890625 1736695258.5993 +MEM 2075.921875 1736695258.7002 +MEM 2819.187500 1736695258.8036 +MEM 2140.703125 1736695258.9071 +MEM 2205.671875 1736695259.0076 +MEM 2398.234375 1736695259.1127 +MEM 2931.171875 1736695259.2150 +MEM 3440.703125 1736695259.3184 +MEM 3685.968750 1736695259.4235 +MEM 3898.671875 1736695259.5281 +MEM 4240.390625 1736695259.6300 +MEM 4635.296875 1736695259.7352 +MEM 4913.375000 1736695259.8362 +MEM 5498.187500 1736695259.9405 +MEM 5795.406250 1736695260.0413 +MEM 6050.859375 1736695260.1466 +MEM 6327.703125 1736695260.2518 +MEM 6606.515625 1736695260.3570 +MEM 6859.656250 1736695260.4593 +MEM 7284.343750 1736695260.5604 +MEM 8139.390625 1736695260.6646 +MEM 8420.046875 1736695260.7698 +MEM 8708.296875 1736695260.8728 +MEM 8912.093750 1736695260.9730 +MEM 8968.000000 1736695261.0751 +MEM 9680.734375 1736695261.1803 +MEM 10190.437500 1736695261.2854 +MEM 10369.312500 1736695261.3904 +MEM 10563.031250 1736695261.4947 +MEM 11025.468750 1736695261.5992 +MEM 11327.875000 1736695261.7044 +MEM 11922.812500 1736695261.8096 +MEM 12339.375000 1736695261.9139 +MEM 12634.609375 1736695262.0164 +MEM 12935.046875 1736695262.1208 +MEM 13230.609375 1736695262.2231 +MEM 13682.546875 1736695262.3237 +MEM 14580.328125 1736695262.4283 +MEM 14874.796875 1736695262.5326 +MEM 15144.000000 1736695262.6328 +MEM 15364.203125 1736695262.7376 +MEM 15774.015625 1736695262.8428 +MEM 16504.546875 1736695262.9465 +MEM 15973.875000 1736695263.0517 +MEM 18718.234375 1736695263.1569 +MEM 19237.078125 1736695263.2616 +MEM 19373.812500 1736695263.3667 +MEM 19510.390625 1736695263.4708 +MEM 19647.171875 1736695263.5741 +MEM 19784.328125 1736695263.6792 +MEM 19920.984375 1736695263.7841 +MEM 20059.937500 1736695263.8875 +MEM 20198.734375 1736695263.9903 +MEM 20340.453125 1736695264.0955 +MEM 20478.015625 1736695264.1993 +MEM 20611.265625 1736695264.3044 +MEM 20741.546875 1736695264.4071 +MEM 20880.718750 1736695264.5122 +MEM 21016.281250 1736695264.6144 +MEM 21147.812500 1736695264.7159 +MEM 21283.562500 1736695264.8211 +MEM 21423.625000 1736695264.9262 +MEM 21561.890625 1736695265.0294 +MEM 21703.015625 1736695265.1346 +MEM 21838.640625 1736695265.2363 +MEM 21978.234375 1736695265.3415 +MEM 22118.203125 1736695265.4467 +MEM 22251.703125 1736695265.5492 +MEM 22387.953125 1736695265.6541 +MEM 22514.937500 1736695265.7552 +MEM 22589.609375 1736695265.8562 +MEM 22435.953125 1736695265.9611 +MEM 22346.843750 1736695266.0659 +MEM 22287.828125 1736695266.1682 +MEM 22282.765625 1736695266.2734 +MEM 22330.671875 1736695266.3774 +MEM 22358.140625 1736695266.4826 +MEM 22415.140625 1736695266.5866 +MEM 19998.296875 1736695266.6912 +MEM 10295.312500 1736695266.7939 +MEM 10295.312500 1736695266.8978 +MEM 10295.312500 1736695266.9992 +MEM 10295.312500 1736695267.0996 +MEM 10295.312500 1736695267.2047 +MEM 10295.312500 1736695267.3099 +MEM 10295.312500 1736695267.4150 +MEM 10295.312500 1736695267.5175 +MEM 10295.312500 1736695267.6203 +MEM 10295.312500 1736695267.7245 +MEM 10295.312500 1736695267.8281 +MEM 10295.312500 1736695267.9332 +MEM 10295.312500 1736695268.0348 +MEM 10295.312500 1736695268.1399 +MEM 5611.343750 1736695268.2451 +MEM 5613.031250 1736695268.3492 diff --git a/benchmark/results/memory/dataframes/mprofile_polars-bio-overlap-pl.dat b/benchmark/results/memory/dataframes/mprofile_polars-bio-overlap-pl.dat new file mode 100644 index 0000000..136c1f5 --- /dev/null +++ b/benchmark/results/memory/dataframes/mprofile_polars-bio-overlap-pl.dat @@ -0,0 +1,108 @@ +CMDLINE /Users/mwiewior/research/git/polars-bio/.venv/bin/python benchmark/src/bench_overlap_dataframes.py +MEM 0.062500 1736695361.4820 +MEM 41.468750 1736695361.5854 +MEM 79.156250 1736695361.6908 +MEM 107.125000 1736695361.7959 +MEM 134.437500 1736695361.9004 +MEM 158.078125 1736695362.0055 +MEM 177.875000 1736695362.1080 +MEM 525.234375 1736695362.2132 +MEM 762.171875 1736695362.3184 +MEM 681.109375 1736695362.4235 +MEM 689.062500 1736695362.5287 +MEM 717.062500 1736695362.6288 +MEM 748.328125 1736695362.7323 +MEM 780.718750 1736695362.8375 +MEM 811.234375 1736695362.9388 +MEM 841.125000 1736695363.0394 +MEM 1041.500000 1736695363.1396 +MEM 1206.046875 1736695363.2448 +MEM 1293.625000 1736695363.3465 +MEM 1350.015625 1736695363.4485 +MEM 1398.328125 1736695363.5528 +MEM 1464.687500 1736695363.6576 +MEM 1497.890625 1736695363.7628 +MEM 1562.984375 1736695363.8636 +MEM 1632.140625 1736695363.9688 +MEM 1694.218750 1736695364.0729 +MEM 1933.687500 1736695364.1781 +MEM 1791.406250 1736695364.2818 +MEM 1859.156250 1736695364.3870 +MEM 1921.906250 1736695364.4921 +MEM 1985.671875 1736695364.5958 +MEM 2045.937500 1736695364.6985 +MEM 2110.796875 1736695364.8036 +MEM 2177.812500 1736695364.9062 +MEM 2244.875000 1736695365.0095 +MEM 2900.328125 1736695365.1147 +MEM 2312.812500 1736695365.2198 +MEM 2375.796875 1736695365.3250 +MEM 2522.734375 1736695365.4285 +MEM 3052.421875 1736695365.5337 +MEM 3556.500000 1736695365.6344 +MEM 3804.703125 1736695365.7369 +MEM 4013.375000 1736695365.8382 +MEM 4287.921875 1736695365.9396 +MEM 4748.453125 1736695366.0448 +MEM 5032.250000 1736695366.1471 +MEM 5499.281250 1736695366.2523 +MEM 5963.671875 1736695366.3575 +MEM 6248.140625 1736695366.4626 +MEM 6530.625000 1736695366.5678 +MEM 6803.187500 1736695366.6695 +MEM 7064.093750 1736695366.7705 +MEM 7580.640625 1736695366.8729 +MEM 8347.593750 1736695366.9758 +MEM 8617.234375 1736695367.0786 +MEM 8906.250000 1736695367.1818 +MEM 9112.562500 1736695367.2849 +MEM 9228.093750 1736695367.3896 +MEM 9990.921875 1736695367.4911 +MEM 10381.359375 1736695367.5916 +MEM 10558.265625 1736695367.6937 +MEM 10756.218750 1736695367.7988 +MEM 11214.328125 1736695367.8996 +MEM 11503.328125 1736695368.0049 +MEM 11971.093750 1736695368.1101 +MEM 12453.281250 1736695368.2104 +MEM 12755.218750 1736695368.3151 +MEM 13060.937500 1736695368.4203 +MEM 13358.796875 1736695368.5223 +MEM 13664.687500 1736695368.6229 +MEM 14690.937500 1736695368.7239 +MEM 14990.109375 1736695368.8253 +MEM 15283.203125 1736695368.9290 +MEM 15536.750000 1736695369.0317 +MEM 15823.937500 1736695369.1353 +MEM 16653.218750 1736695369.2395 +MEM 14637.937500 1736695369.3401 +MEM 14973.140625 1736695369.4410 +MEM 15325.562500 1736695369.5432 +MEM 15684.062500 1736695369.6473 +MEM 16041.875000 1736695369.7524 +MEM 16400.859375 1736695369.8574 +MEM 16759.343750 1736695369.9613 +MEM 17124.828125 1736695370.0664 +MEM 17479.062500 1736695370.1689 +MEM 17830.390625 1736695370.2731 +MEM 18180.406250 1736695370.3754 +MEM 18533.265625 1736695370.4781 +MEM 18892.171875 1736695370.5817 +MEM 19251.406250 1736695370.6857 +MEM 19612.156250 1736695370.7866 +MEM 19979.953125 1736695370.8918 +MEM 20306.218750 1736695370.9935 +MEM 20653.968750 1736695371.0986 +MEM 20996.609375 1736695371.2038 +MEM 21342.859375 1736695371.3046 +MEM 21703.578125 1736695371.4089 +MEM 22042.625000 1736695371.5108 +MEM 22377.937500 1736695371.6151 +MEM 22699.453125 1736695371.7187 +MEM 23002.656250 1736695371.8191 +MEM 23345.265625 1736695371.9232 +MEM 23684.828125 1736695372.0287 +MEM 19092.656250 1736695372.1312 +MEM 14405.375000 1736695372.2318 +MEM 7045.296875 1736695372.3362 +MEM 6880.062500 1736695372.4364 diff --git a/docs/assets/memory/dataframes/polars-bio-overlap-mem.png b/docs/assets/memory/dataframes/polars-bio-overlap-mem.png new file mode 100644 index 0000000000000000000000000000000000000000..428e4a4ddf6fecc8639fd34e052d7149b6a938ce GIT binary patch literal 31242 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 literal 0 HcmV?d00001 diff --git a/docs/assets/memory/dataframes/polars-bio-overlap-pd-mem.png b/docs/assets/memory/dataframes/polars-bio-overlap-pd-mem.png new file mode 100644 index 0000000000000000000000000000000000000000..a3530b1e803d8c320b63a7a4353b745dfcad5f3e GIT binary patch literal 34385 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 VW0!4isO*9N$Vw|oWnR|v`ah8@+Y$f( literal 0 HcmV?d00001 diff --git a/docs/assets/memory/dataframes/polars-bio-overlap-pl-mem.png b/docs/assets/memory/dataframes/polars-bio-overlap-pl-mem.png new file mode 100644 index 0000000000000000000000000000000000000000..94b58327b7e517bac619e4f109d3e32cbc0c6862 GIT binary patch literal 35385 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

_{id2qtkCUFZ!VoYX+BFo6}k)=z0f6J9HJ2K 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 literal 0 HcmV?d00001 diff --git a/docs/performance.md b/docs/performance.md index 1f3e581..799287c 100644 --- a/docs/performance.md +++ b/docs/performance.md @@ -1125,8 +1125,23 @@ the `parallel` dataset was used (see [Test datasets](#test-datasets)) | polars_bio_polars_eager | 9.334948 | 9.350016 | 9.343123 | **0.42x** | | polars_bio_polars_lazy | 9.801333 | 10.048262 | 9.912648 | 0.40x | +| Source | Peak Memory (MB)) | Factor | +|-------------------------|-------------------|----------| +| polars_bio | **14,671** | **1.0x** | +| polars_bio_pandas_pd | 22,589 | 1.54x | +| polars_bio_pandas_eager | 23,681 | 1.61x | +###### Memory characteristic polars_bio +![polars-bio-overlap-mem.png](assets/memory/dataframes/polars-bio-overlap-mem.png) + +###### Memory characteristic polars_bio_pandas_pd +![polars-bio-overlap-pd-mem.png](assets/memory/dataframes/polars-bio-overlap-pd-mem.png) + +###### Memory characteristic polars_bio_pandas_eager + +![polars-bio-overlap-pl-mem.png](assets/memory/dataframes/polars-bio-overlap-pl-mem.png) + ### Intel Emerald Rapids (Linux) 🐧 #### S-size @@ -1164,13 +1179,13 @@ the `parallel` dataset was used (see [Test datasets](#test-datasets)) #### M-size ##### 7-0 -| Library | Min (s) | Max (s) | Mean (s) | Speedup | -|-------------------------|----------|----------|----------|---------| -| polars_bio | 0.306130 | 0.314524 | 0.309803 | 1.00x | -| polars_bio_pandas_lf | 0.416123 | 0.432397 | 0.422839 | 0.73x | -| polars_bio_pandas_pd | 0.410937 | 0.414566 | 0.412503 | 0.75x | -| polars_bio_polars_eager | 0.353321 | 0.364626 | 0.358433 | 0.86x | -| polars_bio_polars_lazy | 0.355099 | 0.359842 | 0.357666 | 0.87x | +| Library | Min (s) | Max (s) | Mean (s) | Speedup | +|-------------------------|----------|----------|----------|-----------| +| polars_bio | 0.306130 | 0.314524 | 0.309803 | **1.00x** | +| polars_bio_pandas_lf | 0.416123 | 0.432397 | 0.422839 | 0.73x | +| polars_bio_pandas_pd | 0.410937 | 0.414566 | 0.412503 | 0.75x | +| polars_bio_polars_eager | 0.353321 | 0.364626 | 0.358433 | 0.86x | +| polars_bio_polars_lazy | 0.355099 | 0.359842 | 0.357666 | 0.87x | ##### 7-3 @@ -1198,20 +1213,20 @@ the `parallel` dataset was used (see [Test datasets](#test-datasets)) | Library | Min (s) | Max (s) | Mean (s) | Speedup | |-------------------------|-----------|-----------|-----------|-----------| | polars_bio | 6.043839 | 6.129112 | 6.088359 | **1.00x** | -| polars_bio_pandas_lf | 16.528438 | 16.674857 | 16.605654 | **0.37x** | +| polars_bio_pandas_lf | 16.528438 | 16.674857 | 16.605654 | 0.37x | | polars_bio_pandas_pd | 16.575829 | 16.643302 | 16.600709 | 0.37x | | polars_bio_polars_eager | 16.177433 | 16.185123 | 16.180217 | 0.38x | | polars_bio_polars_lazy | 16.214009 | 16.395757 | 16.281422 | 0.37x | ##### 7-8 -| Library | Min (s) | Max (s) | Mean (s) | Speedup | -|-------------------------|-----------|-----------|-----------|------------| -| polars_bio | 4.600700 | 4.806215 | 4.689799 | ***1.00x** | -| polars_bio_pandas_lf | 19.858977 | 20.342740 | 20.104499 | 0.23x | -| polars_bio_pandas_pd | 20.263301 | 20.594552 | 20.402049 | 0.23x | -| polars_bio_polars_eager | 19.837098 | 20.012580 | 19.922743 | **0.24x** | -| polars_bio_polars_lazy | 19.803839 | 19.818197 | 19.813257 | **0.24x** | +| Library | Min (s) | Max (s) | Mean (s) | Speedup | +|-------------------------|-----------|-----------|-----------|-----------| +| polars_bio | 4.600700 | 4.806215 | 4.689799 | **1.00x** | +| polars_bio_pandas_lf | 19.858977 | 20.342740 | 20.104499 | 0.23x | +| polars_bio_pandas_pd | 20.263301 | 20.594552 | 20.402049 | 0.23x | +| polars_bio_polars_eager | 19.837098 | 20.012580 | 19.922743 | **0.24x** | +| polars_bio_polars_lazy | 19.803839 | 19.818197 | 19.813257 | **0.24x** | ### Parallel execution