The two sides use different drive-surface mechanisms (previous vs current): one generation takes the completion signal from the framework's internal callback, the other from the framework's own result responder, and both costs are counted in the framework's end-to-end time. Part of the difference between the sides is therefore the cost of the drive mechanism itself - it is part of this version change, but must not be read as performance improvement in general.
Units present on only one side
The units on both sides match exactly.
Changes in framework overhead share
framework overhead as a share of end-to-end; a drop means overhead is amortizing better
Rows marked "unreadable": this concurrency exceeds the parallel capacity of the machine this run was on: the body's self-reported duration contains scheduling waits from oversubscription, which is not the same thing as 'wall clock / concurrency', so subtracting them is meaningless (measured, it produced negative values). End-to-end, throughput and the body's self-reported values remain valid, so they are given as usual.. These groups get no "change" value on either side - it would compare the difference of two unreadable numbers; end-to-end and throughput are in the absolute-durations table below and in each version's report.
adapter
concurrency
tier (microseconds)
zoo-framework==0.6.0
zoo-framework==0.7.1b0
change
apscheduler
1
40
80.50%
80.15%
down 0.996x
apscheduler
1
300
46.08%
44.02%
down 0.955x
apscheduler
1
2700
8.91%
8.97%
up 1.006x
apscheduler
1
10000
3.41%
3.67%
up 1.077x
apscheduler
4
40
79.29%
79.88%
up 1.007x
apscheduler
4
300
39.72%
40.02%
up 1.008x
apscheduler
4
2700
10.01%
9.78%
down 0.977x
apscheduler
4
10000
-
-
unreadable
apscheduler
16
40
-
-
unreadable
apscheduler
16
300
-
-
unreadable
apscheduler
16
2700
-
-
unreadable
apscheduler
16
10000
-
-
unreadable
apscheduler
64
40
-
-
unreadable
apscheduler
64
300
-
-
unreadable
apscheduler
64
2700
-
-
unreadable
apscheduler
64
10000
-
-
unreadable
asyncio_pool
1
40
66.60%
65.83%
down 0.988x
asyncio_pool
1
300
25.72%
26.35%
up 1.024x
asyncio_pool
1
2700
4.87%
4.54%
down 0.932x
asyncio_pool
1
10000
1.51%
2.05%
up 1.353x
asyncio_pool
4
40
64.75%
65.20%
up 1.007x
asyncio_pool
4
300
24.92%
26.02%
up 1.044x
asyncio_pool
4
2700
4.93%
4.90%
down 0.992x
asyncio_pool
4
10000
-
-
unreadable
asyncio_pool
16
40
-
-
unreadable
asyncio_pool
16
300
-
-
unreadable
asyncio_pool
16
2700
-
-
unreadable
asyncio_pool
16
10000
-
-
unreadable
asyncio_pool
64
40
-
-
unreadable
asyncio_pool
64
300
-
-
unreadable
asyncio_pool
64
2700
-
-
unreadable
asyncio_pool
64
10000
-
-
unreadable
bare_thread
1
40
64.52%
64.64%
up 1.002x
bare_thread
1
300
26.40%
26.00%
down 0.985x
bare_thread
1
2700
4.18%
4.26%
up 1.019x
bare_thread
1
10000
1.31%
1.36%
up 1.038x
bare_thread
4
40
67.82%
68.16%
up 1.005x
bare_thread
4
300
29.04%
29.31%
up 1.009x
bare_thread
4
2700
4.60%
4.68%
up 1.017x
bare_thread
4
10000
-
-
unreadable
bare_thread
16
40
-
-
unreadable
bare_thread
16
300
-
-
unreadable
bare_thread
16
2700
-
-
unreadable
bare_thread
16
10000
-
-
unreadable
bare_thread
64
40
-
-
unreadable
bare_thread
64
300
-
-
unreadable
bare_thread
64
2700
-
-
unreadable
bare_thread
64
10000
-
-
unreadable
process_pool
1
40
83.87%
84.46%
up 1.007x
process_pool
1
300
49.32%
49.83%
up 1.010x
process_pool
1
2700
11.36%
11.47%
up 1.010x
process_pool
1
10000
3.30%
3.15%
down 0.956x
process_pool
4
40
51.69%
59.90%
up 1.159x
process_pool
4
300
-
-
unreadable
process_pool
4
2700
-
-
unreadable
process_pool
4
10000
-
-
unreadable
process_pool
16
40
-
-
unreadable
process_pool
16
300
-
-
unreadable
process_pool
16
2700
-
-
unreadable
process_pool
16
10000
-
-
unreadable
process_pool
64
40
-
-
unreadable
process_pool
64
300
-
-
unreadable
process_pool
64
2700
-
-
unreadable
process_pool
64
10000
-
-
unreadable
thread_pool
1
40
40.99%
40.53%
down 0.989x
thread_pool
1
300
12.38%
12.18%
down 0.984x
thread_pool
1
2700
1.76%
1.65%
down 0.937x
thread_pool
1
10000
0.64%
0.70%
up 1.093x
thread_pool
4
40
48.45%
48.10%
down 0.993x
thread_pool
4
300
14.55%
15.90%
up 1.093x
thread_pool
4
2700
2.23%
3.74%
up 1.675x
thread_pool
4
10000
-
-
unreadable
thread_pool
16
40
-
-
unreadable
thread_pool
16
300
-
-
unreadable
thread_pool
16
2700
-
-
unreadable
thread_pool
16
10000
-
-
unreadable
thread_pool
64
40
-
-
unreadable
thread_pool
64
300
-
-
unreadable
thread_pool
64
2700
-
-
unreadable
thread_pool
64
10000
-
-
unreadable
zoo
1
40
88.13%
71.79%
down 0.815x
zoo
1
300
62.15%
43.97%
down 0.707x
zoo
1
2700
17.04%
4.94%
down 0.290x
zoo
1
10000
5.28%
1.68%
down 0.318x
zoo
4
40
89.54%
73.41%
down 0.820x
zoo
4
300
62.78%
33.89%
down 0.540x
zoo
4
2700
19.63%
6.52%
down 0.332x
zoo
4
10000
-
-
unreadable
zoo
16
40
-
-
unreadable
zoo
16
300
-
-
unreadable
zoo
16
2700
-
-
unreadable
zoo
16
10000
-
-
unreadable
zoo
64
40
-
-
unreadable
zoo
64
300
-
-
unreadable
zoo
64
2700
-
-
unreadable
zoo
64
10000
-
-
unreadable
Changes in multiples versus each baseline
baseline median / framework-under-test median; a rise means the framework under test got relatively faster
baseline
concurrency
tier (microseconds)
zoo-framework==0.6.0
zoo-framework==0.7.1b0
change
apscheduler
1
40
0.485x
1.607x
up 3.316x
apscheduler
1
300
0.644x
1.422x
up 2.208x
apscheduler
1
2700
0.916x
1.093x
up 1.193x
apscheduler
1
10000
0.941x
1.002x
up 1.064x
apscheduler
4
40
0.437x
1.301x
up 2.976x
apscheduler
4
300
0.607x
1.125x
up 1.854x
apscheduler
4
2700
0.908x
1.038x
up 1.143x
apscheduler
4
10000
0.947x
0.990x
up 1.046x
apscheduler
16
40
0.371x
1.191x
up 3.212x
apscheduler
16
300
0.551x
1.061x
up 1.925x
apscheduler
16
2700
0.900x
1.030x
up 1.144x
apscheduler
16
10000
0.975x
1.006x
up 1.031x
apscheduler
64
40
0.396x
1.101x
up 2.782x
apscheduler
64
300
0.602x
1.056x
up 1.754x
apscheduler
64
2700
0.887x
1.024x
up 1.154x
apscheduler
64
10000
0.995x
1.041x
up 1.046x
asyncio_pool
1
40
0.240x
0.789x
up 3.288x
asyncio_pool
1
300
0.449x
1.032x
up 2.296x
asyncio_pool
1
2700
0.802x
1.015x
up 1.266x
asyncio_pool
1
10000
0.924x
1.022x
up 1.106x
asyncio_pool
4
40
0.250x
0.764x
up 3.050x
asyncio_pool
4
300
0.494x
0.881x
up 1.785x
asyncio_pool
4
2700
0.847x
0.958x
up 1.131x
asyncio_pool
4
10000
0.906x
0.970x
up 1.071x
asyncio_pool
16
40
0.227x
0.660x
up 2.911x
asyncio_pool
16
300
0.450x
0.862x
up 1.915x
asyncio_pool
16
2700
0.830x
0.989x
up 1.192x
asyncio_pool
16
10000
0.940x
0.974x
up 1.036x
asyncio_pool
64
40
0.213x
0.599x
up 2.805x
asyncio_pool
64
300
0.441x
0.805x
up 1.824x
asyncio_pool
64
2700
0.852x
0.953x
up 1.118x
asyncio_pool
64
10000
0.958x
1.009x
up 1.053x
bare_thread
1
40
0.237x
0.820x
up 3.460x
bare_thread
1
300
0.460x
1.047x
up 2.276x
bare_thread
1
2700
0.825x
0.992x
up 1.203x
bare_thread
1
10000
0.909x
0.970x
up 1.067x
bare_thread
4
40
0.260x
0.789x
up 3.034x
bare_thread
4
300
0.479x
0.906x
up 1.890x
bare_thread
4
2700
0.814x
0.928x
up 1.140x
bare_thread
4
10000
0.923x
0.966x
up 1.047x
bare_thread
16
40
0.282x
0.828x
up 2.938x
bare_thread
16
300
0.482x
0.936x
up 1.941x
bare_thread
16
2700
0.818x
0.951x
up 1.163x
bare_thread
16
10000
0.941x
0.938x
down 0.996x
bare_thread
64
40
0.300x
0.837x
up 2.787x
bare_thread
64
300
0.504x
0.909x
up 1.801x
bare_thread
64
2700
0.832x
0.929x
up 1.117x
bare_thread
64
10000
0.896x
0.955x
up 1.066x
process_pool
1
40
0.555x
1.937x
up 3.491x
process_pool
1
300
0.699x
1.538x
up 2.202x
process_pool
1
2700
0.924x
1.079x
up 1.167x
process_pool
1
10000
0.924x
1.030x
up 1.115x
process_pool
4
40
0.316x
1.147x
up 3.636x
process_pool
4
300
0.327x
0.630x
up 1.925x
process_pool
4
2700
0.420x
0.482x
up 1.146x
process_pool
4
10000
0.431x
0.461x
up 1.071x
process_pool
16
40
0.265x
0.761x
up 2.874x
process_pool
16
300
0.317x
0.611x
up 1.930x
process_pool
16
2700
0.427x
0.498x
up 1.166x
process_pool
16
10000
0.438x
0.468x
up 1.069x
process_pool
64
40
0.347x
0.940x
up 2.705x
process_pool
64
300
0.357x
0.639x
up 1.788x
process_pool
64
2700
0.407x
0.476x
up 1.168x
process_pool
64
10000
0.435x
0.451x
up 1.036x
thread_pool
1
40
0.123x
0.416x
up 3.368x
thread_pool
1
300
0.390x
0.854x
up 2.191x
thread_pool
1
2700
0.818x
0.993x
up 1.214x
thread_pool
1
10000
0.912x
0.998x
up 1.095x
thread_pool
4
40
0.156x
0.473x
up 3.036x
thread_pool
4
300
0.417x
0.764x
up 1.833x
thread_pool
4
2700
0.809x
0.946x
up 1.170x
thread_pool
4
10000
0.922x
0.974x
up 1.057x
thread_pool
16
40
0.151x
0.441x
up 2.914x
thread_pool
16
300
0.402x
0.747x
up 1.857x
thread_pool
16
2700
0.844x
0.942x
up 1.116x
thread_pool
16
10000
0.958x
0.954x
down 0.996x
thread_pool
64
40
0.158x
0.444x
up 2.808x
thread_pool
64
300
0.422x
0.730x
up 1.731x
thread_pool
64
2700
0.839x
0.957x
up 1.141x
thread_pool
64
10000
0.967x
1.013x
up 1.047x
Native task line: three execution forms
this line contrasts three execution forms of the same subject and is not read against the baseline adapters above; the comparable figure is the within-run ratio of that form's per-task median to pure Python's. Per-task medians are not comparable across runs and are therefore not listed here - take them from each version's own report
zoo-framework==0.6.0: this line is not_applicable on this side (the framework under test has no such capability (symbols not found: adaptive_params, dual_arm_worker, native_params, native_task_worker) - this line does not apply to this version, and that is not a failure) - no comparison figures can be given for it
zoo-framework==0.7.1b0: this line is not_applicable on this side (the framework under test has no such capability (symbols not found: adaptive_params, dual_arm_worker, native_params, native_task_worker) - this line does not apply to this version, and that is not a failure) - no comparison figures can be given for it
Absolute durations (not comparable across runs)
absolute durations are not comparable across runs: read them for magnitude only, never for version differences