Skip to content

Commit 19b7709

Browse files
authored
Merge pull request #33 from mahmudhera/main
added benchmarking plots
2 parents dd5559c + 57a5472 commit 19b7709

31 files changed

+318
-37
lines changed

benchmark/benchmark_index.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
data_dir = "/scratch/mbr5797/fast_index_compare_data"
66
filelists = ["filelist_10k", "filelist_20k", "filelist_30k", "filelist_40k", "filelist_50k"]
77
index_names = ["index_10k", "index_20k", "index_30k", "index_40k", "index_50k"]
8-
output_filename = "index_benchmark_results.csv"
8+
output_filename = "benchmark/benchmark_results_index_1_thread.csv"
99
filesizes = [10000, 20000, 30000, 40000, 50000]
1010

1111
filesize_to_metrics = {}
@@ -15,8 +15,8 @@
1515
filelist_path = os.path.join(data_dir, filelist)
1616
index_path = os.path.join(data_dir, index_name)
1717

18-
# command = bin/index filelist index_10k -t 128 -f
19-
command = f"bin/index {filelist_path} {index_path} -t 128 -f"
18+
# command = bin/index filelist index_10k -t num_threads -f
19+
command = f"bin/index {filelist_path} {index_path} -t 1 -f"
2020
print(command)
2121
metrics = run_command_and_record_time_memory(command)
2222
if metrics:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
query_filesize,ref_filesize,cpu_time,wall_clock_time,peak_memory_usage
2+
10000,10000,204.47,12.57,2.415107727
3+
10000,20000,380.01,24.37,4.331439972
4+
10000,30000,545.8,36.85,6.556518555
5+
20000,10000,302.33,14.6,3.080425262
6+
20000,20000,547.52,26.98,5.377666473
7+
20000,30000,816.97,43.64,7.965732574
8+
30000,10000,403.61,16.38,3.748374939
9+
30000,20000,736.66,31.35,6.426616669
10+
30000,30000,1043.56,47.25,9.372467041
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
ref_filesize,cpu_time,wall_clock_time,peak_memory_usage
2-
10000,6.05,4.88,1.4627342224121094
3-
20000,12.87,8.21,2.6674842834472656
4-
30000,19.36,11.51,3.665019989013672
5-
40000,28.41,15.75,4.927120208740234
6-
50000,32.76,18.09,5.807842254638672
2+
10000,4.14,5.49,1.4588813781738281
3+
20000,8.29,11.23,2.6649627685546875
4+
30000,11.61,15.14,3.6682586669921875
5+
40000,15.52,20.81,4.928775787353516
6+
50000,18.86,24.97,5.815422058105469
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
filesize,cpu_time,wall_clock_time,peak_memory_usage
2+
10000,33.17,39.2,1.7743682861328125
3+
20000,78.25,85.62,3.2980804443359375
4+
30000,108.39,120.13,4.630786895751953
5+
40000,146.96,245.95,6.2045135498046875
6+
50000,190.05,216.12,7.409183502197266
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
ref_filesize,cpu_time,wall_clock_time,peak_memory_usage
2-
10000,31.48,18.79,0.6686553955078125
3-
20000,48.81,36.86,1.2401275634765625
4-
30000,65.18,54.9,1.8105087280273438
5-
40000,90.81,82.46000000000001,2.385051727294922
6-
50000,127.87,120.25,2.9600563049316406
2+
10000,37.02,24.78,0.6694526672363281
3+
20000,53.23,49.53,1.2409553527832031
4+
30000,82.19,73.13,1.8104515075683594
5+
40000,106.16,98.03,2.3841896057128906
6+
50000,127.68,121.55,2.960651397705078
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
filesize,cpu_time,wall_clock_time,peak_memory_usage
2+
10000,68.28,68.57,1.3034210205078125
3+
20000,134.9,133.14,1.8972129821777344
4+
30000,195.83,205.06,2.7955970764160156
5+
40000,269.48,276.15,3.690673828125
6+
50000,348.36,360.26,4.592220306396484
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
ref_filesize,cpu_time,wall_clock_time,peak_memory_usage
2+
10000,33.38,19.81,0.748443603515625
3+
20000,62.05,48.86,1.2132568359375
4+
30000,74.46,68.56,1.7856864929199219
5+
40000,96.94,90.77,2.3553733825683594
6+
50000,132.8,120.42,2.9264678955078125
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
ref_filesize,cpu_time,wall_clock_time,peak_memory_usage
2+
10000,2.28,2.47,0.010650634765625
3+
20000,4.77,5.16,0.01788330078125
4+
30000,6.69,7.25,0.025115966796875
5+
40000,8.46,9.03,0.032421112060546875
6+
50000,10.37,10.84,0.03954315185546875

benchmark/benchmark_sourmash_index.py

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import os
2+
from utils import run_command_and_record_time_memory
3+
4+
if __name__ == "__main__":
5+
data_dir = "/scratch/mbr5797/fast_index_compare_data"
6+
filelists = ["filelist_10k", "filelist_20k", "filelist_30k", "filelist_40k", "filelist_50k"]
7+
index_names = ["sourmash_sbt_10k", "sourmash_sbt_20k", "sourmash_sbt_30k", "sourmash_sbt_40k", "sourmash_sbt_50k"]
8+
output_filename = "benchmark/benchmark_results_sourmash_index.csv"
9+
filesizes = [10000, 20000, 30000, 40000, 50000]
10+
11+
filesize_to_metrics = {}
12+
13+
for filelist, index_name, filesize in zip(filelists, index_names, filesizes):
14+
print(f"Processing {filelist}")
15+
filelist_path = os.path.join(data_dir, filelist)
16+
index_path = os.path.join(data_dir, index_name)
17+
18+
# command = sourmash index /scratch/mbr5797/fast_index_compare_data/sourmash_sbt_10k --from-file /scratch/mbr5797/fast_index_compare_data/filelist_10k
19+
command = f"sourmash index {index_path} --from-file {filelist_path}"
20+
print(command)
21+
22+
metrics = run_command_and_record_time_memory(command)
23+
if metrics:
24+
filesize_to_metrics[filesize] = metrics
25+
else:
26+
print(f"Error processing {filelist}")
27+
28+
print(filesize_to_metrics)
29+
30+
# Write results to CSV, headers should have no spaces or brackets
31+
with open(output_filename, 'w') as f:
32+
f.write("filesize,cpu_time,wall_clock_time,peak_memory_usage\n")
33+
for filesize, metrics in filesize_to_metrics.items():
34+
f.write(f"{filesize},{metrics['cpu_time']},{metrics['wall_clock_time']},{metrics['peak_memory_usage']}\n")
35+
36+
+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import os
2+
from utils import run_command_and_record_time_memory
3+
4+
if __name__ == "__main__":
5+
data_dir = "/scratch/mbr5797/fast_index_compare_data"
6+
index_names = ["sourmash_sbt_10k.sbt.zip", "sourmash_sbt_20k.sbt.zip", "sourmash_sbt_30k.sbt.zip", "sourmash_sbt_40k.sbt.zip", "sourmash_sbt_50k.sbt.zip"]
7+
benchmark_filename = "benchmark/benchmark_results_sourmash_prefetch.csv"
8+
ref_sizes = [10000, 20000, 30000, 40000, 50000]
9+
10+
# this is the query sketch in filelist_1, used in the other benchmarks
11+
query_sketch_name = "/scratch/mbr5797/fast_index_compare_data/signatures_gtdb_rs207_genomic/718882c2dd33e2711f95f8ed2a413fde.sig"
12+
13+
ref_size_to_metrics = {}
14+
15+
for index_name, ref_size in zip(index_names, ref_sizes):
16+
print(f"Processing {query_sketch_name} vs {index_name}")
17+
18+
index_path = os.path.join(data_dir, index_name)
19+
output_filename = f"sourmash_prefetch_results_against_{ref_size}.csv"
20+
output_filename = os.path.join(data_dir, output_filename)
21+
22+
# cmd: sourmash prefetch query_filename sbt_name --threshold_bp 0 -o output_filename
23+
command = f"sourmash prefetch {query_sketch_name} {index_path} --threshold-bp 0 -o {output_filename}"
24+
print(command)
25+
26+
metrics = run_command_and_record_time_memory(command)
27+
if metrics:
28+
ref_size_to_metrics[ref_size] = metrics
29+
else:
30+
print(f"Error processing {query_sketch_name} vs {index_name}")
31+
32+
print(ref_size_to_metrics)
33+
34+
with open(benchmark_filename, "w") as f:
35+
print('Writing to: ' + benchmark_filename)
36+
f.write("ref_filesize,cpu_time,wall_clock_time,peak_memory_usage\n")
37+
for ref_size, metrics in ref_size_to_metrics.items():
38+
f.write(f"{ref_size},{metrics['cpu_time']},{metrics['wall_clock_time']},{metrics['peak_memory_usage']}\n")

benchmark/benchmark_this_prefetch.py

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import os
2+
from utils import run_command_and_record_time_memory
3+
4+
if __name__ == "__main__":
5+
data_dir = "/scratch/mbr5797/fast_index_compare_data"
6+
index_names = ["index_10k", "index_20k", "index_30k", "index_40k", "index_50k"]
7+
benchmark_filename = "benchmark/benchmark_results_this_prefetch.csv"
8+
ref_sizes = [10000, 20000, 30000, 40000, 50000]
9+
10+
# this is the query sketch in filelist_1, used in the other benchmarks
11+
query_sketch_name = "/scratch/mbr5797/fast_index_compare_data/signatures_gtdb_rs207_genomic/718882c2dd33e2711f95f8ed2a413fde.sig"
12+
13+
ref_size_to_metrics = {}
14+
15+
for index_name, ref_size in zip(index_names, ref_sizes):
16+
print(f"Processing {query_sketch_name} vs {index_name}")
17+
18+
index_path = os.path.join(data_dir, index_name)
19+
output_filename = f"prefetch_results_against_{ref_size}.csv"
20+
output_filename = os.path.join(data_dir, output_filename)
21+
22+
# cmd: bin/prefetch query_path ref_index_path output_filename -b 0
23+
command = f"bin/prefetch {query_sketch_name} {index_path} {output_filename} -b 0"
24+
print(command)
25+
26+
metrics = run_command_and_record_time_memory(command)
27+
if metrics:
28+
ref_size_to_metrics[ref_size] = metrics
29+
else:
30+
print(f"Error processing {query_sketch_name} vs {index_name}")
31+
32+
print(ref_size_to_metrics)
33+
34+
with open(benchmark_filename, "w") as f:
35+
print('Writing to: ' + benchmark_filename)
36+
f.write("ref_filesize,cpu_time,wall_clock_time,peak_memory_usage\n")
37+
for ref_size, metrics in ref_size_to_metrics.items():
38+
f.write(f"{ref_size},{metrics['cpu_time']},{metrics['wall_clock_time']},{metrics['peak_memory_usage']}\n")
+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import pandas as pd
2+
import matplotlib.pyplot as plt
3+
4+
# set arial as the default font
5+
plt.rcParams['font.family'] = 'Arial'
6+
7+
# Load the data
8+
df_sourmash_index = pd.read_csv('benchmark_results_sourmash_index.csv')
9+
df_cpp_index_one_thread = pd.read_csv('benchmark_results_index_1_thread.csv')
10+
df_cpp_index_128_threads = pd.read_csv('benchmark_results_index_128_threads.csv')
11+
12+
# col names: filesize,cpu_time,wall_clock_time,peak_memory_usage
13+
14+
# plot wall-clock time against file size
15+
plt.plot(df_sourmash_index['filesize'], df_sourmash_index['wall_clock_time'], label='sourmash index', marker='o')
16+
plt.plot(df_cpp_index_one_thread['filesize'], df_cpp_index_one_thread['wall_clock_time'], label='cpp index (1 thread)', marker='o')
17+
plt.plot(df_cpp_index_128_threads['filesize'], df_cpp_index_128_threads['wall_clock_time'], label='cpp index (128 threads)', marker='o')
18+
19+
plt.xlabel('Number of references')
20+
plt.ylabel('Wall-clock time (s) to build index')
21+
plt.title('Wall-clock time to build indices for different number of references')
22+
plt.xticks(df_sourmash_index['filesize'])
23+
plt.legend()
24+
plt.grid(linestyle='--', alpha=0.3)
25+
plt.savefig('plots/benchmark_results_indexing_wall_clock_time.pdf')
26+
27+
# plot cpu time against file size
28+
plt.clf()
29+
plt.plot(df_sourmash_index['filesize'], df_sourmash_index['cpu_time'], label='sourmash index', marker='o')
30+
plt.plot(df_cpp_index_one_thread['filesize'], df_cpp_index_one_thread['cpu_time'], label='cpp index (1 thread)', marker='o')
31+
plt.plot(df_cpp_index_128_threads['filesize'], df_cpp_index_128_threads['cpu_time'], label='cpp index (128 threads)', marker='o')
32+
33+
plt.xlabel('Number of references')
34+
plt.ylabel('CPU time (s) to build index')
35+
plt.title('CPU time to build indices for different number of references')
36+
plt.xticks(df_sourmash_index['filesize'])
37+
plt.legend()
38+
plt.grid(linestyle='--', alpha=0.3)
39+
plt.savefig('plots/benchmark_results_indexing_cpu_time.pdf')
40+
41+
# plot peak memory usage against file size
42+
plt.clf()
43+
plt.plot(df_sourmash_index['filesize'], df_sourmash_index['peak_memory_usage'], label='sourmash index', marker='o')
44+
plt.plot(df_cpp_index_one_thread['filesize'], df_cpp_index_one_thread['peak_memory_usage'], label='cpp index (1 thread)', marker='o')
45+
plt.plot(df_cpp_index_128_threads['filesize'], df_cpp_index_128_threads['peak_memory_usage'], label='cpp index (128 threads)', marker='o')
46+
47+
plt.xlabel('Number of references')
48+
plt.ylabel('Peak memory usage (GB) to build index')
49+
plt.title('Peak memory usage to build indices for different number of references')
50+
plt.xticks(df_sourmash_index['filesize'])
51+
plt.legend()
52+
plt.grid(linestyle='--', alpha=0.3)
53+
plt.savefig('plots/benchmark_results_indexing_peak_memory_usage.pdf')

benchmark/plot_many_v_many.py

+66-24
Original file line numberDiff line numberDiff line change
@@ -6,66 +6,108 @@
66

77
# Load the data
88
df_compare = pd.read_csv('benchmark_results_compare_many_v_many.csv')
9+
df_compare_without_index = pd.read_csv('benchmark_results_compare_many_v_many_no_index.csv')
910
df_multisearch = pd.read_csv('benchmark_results_multisearch_many_v_many.csv')
1011

12+
# drop rows with query_filesize > 30000, ref_filesize > 30000
13+
df_compare = df_compare[(df_compare['query_filesize'] <= 30000) & (df_compare['ref_filesize'] <= 30000)]
14+
df_compare_without_index = df_compare_without_index[(df_compare_without_index['query_filesize'] <= 30000) & (df_compare_without_index['ref_filesize'] <= 30000)]
15+
df_multisearch = df_multisearch[(df_multisearch['query_filesize'] <= 30000) & (df_multisearch['ref_filesize'] <= 30000)]
16+
1117
# col names: query_filesize,ref_filesize,cpu_time,wall_clock_time,peak_memory_usage
1218

13-
# plot wall-clock time for query file size = 50000, use different reference file sizes in x-axis
14-
df_compare_50000 = df_compare[df_compare['query_filesize'] == 50000]
15-
df_multisearch_50000 = df_multisearch[df_multisearch['query_filesize'] == 50000]
19+
# plot wall-clock time for query file size = 30000, use different reference file sizes in x-axis
20+
df_compare_30000 = df_compare[df_compare['query_filesize'] == 30000]
21+
df_compare_without_index_30000 = df_compare_without_index[df_compare_without_index['query_filesize'] == 30000]
22+
df_multisearch_30000 = df_multisearch[df_multisearch['query_filesize'] == 30000]
1623

17-
plt.plot(df_compare_50000['ref_filesize'], df_compare_50000['wall_clock_time'], label='compare (cpp)', marker='o')
18-
plt.plot(df_multisearch_50000['ref_filesize'], df_multisearch_50000['wall_clock_time'], label='multisearch (sourmash)', marker='o')
24+
plt.plot(df_compare_30000['ref_filesize'], df_compare_30000['wall_clock_time'], label='compare (cpp)', marker='o')
25+
plt.plot(df_compare_without_index_30000['ref_filesize'], df_compare_without_index_30000['wall_clock_time'], label='compare (cpp) without index', marker='o')
26+
plt.plot(df_multisearch_30000['ref_filesize'], df_multisearch_30000['wall_clock_time'], label='multisearch (sourmash)', marker='o')
1927

2028
plt.xlabel('Reference list size')
2129
plt.ylabel('Wall-clock time (s)')
22-
plt.title('Wall-clock time for 50k queries')
23-
plt.xticks(df_compare_50000['ref_filesize'])
30+
plt.title('Wall-clock time for 30k queries')
31+
plt.xticks(df_compare_30000['ref_filesize'])
2432
plt.legend()
2533
plt.grid(linestyle='--', alpha=0.3)
2634
plt.savefig('plots/benchmark_results_compare_many_v_many_wall_clock_time.pdf')
2735

2836

29-
# plot peak memory usage for query file size = 50000, use different reference file sizes in x-axis
37+
# plot CPU time for query file size = 30000, use different reference file sizes in x-axis
38+
plt.clf()
39+
plt.plot(df_compare_30000['ref_filesize'], df_compare_30000['cpu_time'], label='compare (cpp)', marker='o')
40+
plt.plot(df_compare_without_index_30000['ref_filesize'], df_compare_without_index_30000['cpu_time'], label='compare (cpp) without index', marker='o')
41+
plt.plot(df_multisearch_30000['ref_filesize'], df_multisearch_30000['cpu_time'], label='multisearch (sourmash)', marker='o')
42+
43+
plt.xlabel('Reference list size')
44+
plt.ylabel('CPU time (s)')
45+
plt.title('CPU time for 30k queries')
46+
plt.xticks(df_compare_30000['ref_filesize'])
47+
plt.legend()
48+
plt.grid(linestyle='--', alpha=0.3)
49+
plt.savefig('plots/benchmark_results_compare_many_v_many_cpu_time.pdf')
50+
51+
52+
# plot peak memory usage for query file size = 30000, use different reference file sizes in x-axis
3053
plt.clf()
31-
plt.plot(df_compare_50000['ref_filesize'], df_compare_50000['peak_memory_usage'], label='compare (cpp)', marker='o')
32-
plt.plot(df_multisearch_50000['ref_filesize'], df_multisearch_50000['peak_memory_usage'], label='multisearch (sourmash)', marker='o')
54+
plt.plot(df_compare_30000['ref_filesize'], df_compare_30000['peak_memory_usage'], label='compare (cpp)', marker='o')
55+
plt.plot(df_compare_without_index_30000['ref_filesize'], df_compare_without_index_30000['peak_memory_usage'], label='compare (cpp) without index', marker='o')
56+
plt.plot(df_multisearch_30000['ref_filesize'], df_multisearch_30000['peak_memory_usage'], label='multisearch (sourmash)', marker='o')
3357

3458
plt.xlabel('Reference list size')
3559
plt.ylabel('Peak memory usage (GB)')
36-
plt.title('Peak memory usage for 50k queries')
37-
plt.xticks(df_compare_50000['ref_filesize'])
60+
plt.title('Peak memory usage for 30k queries')
61+
plt.xticks(df_compare_30000['ref_filesize'])
3862
plt.legend()
3963
plt.grid(linestyle='--', alpha=0.3)
4064
plt.savefig('plots/benchmark_results_compare_many_v_many_peak_memory_usage.pdf')
4165

4266

43-
# plot wall-clock time for ref file size = 50000, use different query file sizes in x-axis
67+
# plot wall-clock time for ref file size = 30000, use different query file sizes in x-axis
4468
plt.clf()
45-
df_compare_50000 = df_compare[df_compare['ref_filesize'] == 50000]
46-
df_multisearch_50000 = df_multisearch[df_multisearch['ref_filesize'] == 50000]
69+
df_compare_30000 = df_compare[df_compare['ref_filesize'] == 30000]
70+
df_compare_without_index_30000 = df_compare_without_index[df_compare_without_index['ref_filesize'] == 30000]
71+
df_multisearch_30000 = df_multisearch[df_multisearch['ref_filesize'] == 30000]
4772

48-
plt.plot(df_compare_50000['query_filesize'], df_compare_50000['wall_clock_time'], label='compare (cpp)', marker='o')
49-
plt.plot(df_multisearch_50000['query_filesize'], df_multisearch_50000['wall_clock_time'], label='multisearch (sourmash)', marker='o')
73+
plt.plot(df_compare_30000['query_filesize'], df_compare_30000['wall_clock_time'], label='compare (cpp)', marker='o')
74+
plt.plot(df_compare_without_index_30000['query_filesize'], df_compare_without_index_30000['wall_clock_time'], label='compare (cpp) without index', marker='o')
75+
plt.plot(df_multisearch_30000['query_filesize'], df_multisearch_30000['wall_clock_time'], label='multisearch (sourmash)', marker='o')
5076

5177
plt.xlabel('Query list size')
5278
plt.ylabel('Wall-clock time (s)')
53-
plt.title('Wall-clock time for 50k references')
54-
plt.xticks(df_compare_50000['query_filesize'])
79+
plt.title('Wall-clock time for 30k references')
80+
plt.xticks(df_compare_30000['query_filesize'])
5581
plt.legend()
5682
plt.grid(linestyle='--', alpha=0.3)
5783
plt.savefig('plots/benchmark_results_compare_many_v_many_wall_clock_time_query.pdf')
5884

5985

60-
# plot peak memory usage for ref file size = 50000, use different query file sizes in x-axis
86+
# plot peak memory usage for ref file size = 30000, use different query file sizes in x-axis
6187
plt.clf()
62-
plt.plot(df_compare_50000['query_filesize'], df_compare_50000['peak_memory_usage'], label='compare (cpp)', marker='o')
63-
plt.plot(df_multisearch_50000['query_filesize'], df_multisearch_50000['peak_memory_usage'], label='multisearch (sourmash)', marker='o')
88+
plt.plot(df_compare_30000['query_filesize'], df_compare_30000['peak_memory_usage'], label='compare (cpp)', marker='o')
89+
plt.plot(df_compare_without_index_30000['query_filesize'], df_compare_without_index_30000['peak_memory_usage'], label='compare (cpp) without index', marker='o')
90+
plt.plot(df_multisearch_30000['query_filesize'], df_multisearch_30000['peak_memory_usage'], label='multisearch (sourmash)', marker='o')
6491

6592
plt.xlabel('Query list size')
6693
plt.ylabel('Peak memory usage (GB)')
67-
plt.title('Peak memory usage for 50k references')
68-
plt.xticks(df_compare_50000['query_filesize'])
94+
plt.title('Peak memory usage for 30k references')
95+
plt.xticks(df_compare_30000['query_filesize'])
6996
plt.legend()
7097
plt.grid(linestyle='--', alpha=0.3)
7198
plt.savefig('plots/benchmark_results_compare_many_v_many_peak_memory_usage_query.pdf')
99+
100+
101+
# plot CPU time for ref file size = 30000, use different query file sizes in x-axis
102+
plt.clf()
103+
plt.plot(df_compare_30000['query_filesize'], df_compare_30000['cpu_time'], label='compare (cpp)', marker='o')
104+
plt.plot(df_compare_without_index_30000['query_filesize'], df_compare_without_index_30000['cpu_time'], label='compare (cpp) without index', marker='o')
105+
plt.plot(df_multisearch_30000['query_filesize'], df_multisearch_30000['cpu_time'], label='multisearch (sourmash)', marker='o')
106+
107+
plt.xlabel('Query list size')
108+
plt.ylabel('CPU time (s)')
109+
plt.title('CPU time for 30k references')
110+
plt.xticks(df_compare_30000['query_filesize'])
111+
plt.legend()
112+
plt.grid(linestyle='--', alpha=0.3)
113+
plt.savefig('plots/benchmark_results_compare_many_v_many_cpu_time_query.pdf')

0 commit comments

Comments
 (0)