| |
perftest runs nIterations successive optimum
attenuation calculations for the filter set specified in config.txt or WAV
file IR for each of 0 through MaxnPartitions partitions. This
can be used to determine the optimum number of partitions for a particular filter.
nTuningRigour can be anything between 0 (Estimate) to 4 (Exhaustive).
1 is a good default.
The output, which can be redirected to a file for analysis in Excel, looks something
like
C:\>perftest 8 2 1 benchmark.txt
6 Paths (6 channels to 6-channel direct) 48kHz, 131072 taps, 2.7s lag
6 Paths (6 channels to 6-channel direct) 48kHz, 131072 taps, 2.7s lag
Partitions |
Rate |
SecCalc |
SecLoad |
Attenuation |
Filter Length |
Partition Length |
Iteration |
0 |
7.22 |
1.89 |
0.554 |
16.2 |
131072 |
131072 |
1 |
0 |
7.31 |
1.87 |
0.574 |
16.3 |
131072 |
131072 |
2 |
1 |
7.01 |
1.95 |
0.57 |
16.4 |
131072 |
131072 |
1 |
1 |
6.99 |
1.95 |
0.566 |
16.5 |
131072 |
131072 |
2 |
2 |
7.31 |
1.87 |
0.557 |
16.4 |
131072 |
65536 |
1 |
2 |
7.21 |
1.89 |
0.556 |
16.3 |
131072 |
65536 |
2 |
3 |
6.19 |
2.2 |
0.557 |
16.4 |
131220 |
43740 |
1 |
3 |
6.31 |
2.17 |
0.562 |
16.4 |
131220 |
43740 |
2 |
4 |
7.04 |
1.94 |
0.541 |
16.3 |
131072 |
32768 |
1 |
4 |
7.09 |
1.93 |
0.529 |
16.3 |
131072 |
32768 |
2 |
5 |
6.23 |
2.19 |
0.544 |
16.2 |
131220 |
26244 |
1 |
5 |
6.21 |
2.2 |
0.539 |
16.2 |
131220 |
26244 |
2 |
6 |
5.19 |
2.63 |
0.546 |
16.3 |
131220 |
21870 |
1 |
6 |
5.08 |
2.69 |
0.558 |
16.1 |
131220 |
21870 |
2 |
7 |
4.7 |
2.91 |
0.556 |
16.2 |
131250 |
18750 |
1 |
7 |
4.69 |
2.91 |
0.554 |
16.3 |
131250 |
18750 |
2 |
8 |
5.4 |
2.53 |
0.537 |
16 |
131072 |
16384 |
1 |
8 |
5.41 |
2.52 |
0.536 |
16.5 |
131072 |
16384 |
2 |
|
|
|
|
|
|
|
|
Total load time: 9.94s |
|
|
|
|
|
Total execution time: 40.2s |
|
|
|
|
|
Total execution time: 40.2s |
|
|
|
|
|
- The SecCalc column is the time in seconds taken to calculate the optimum
attenuation value (which involves processing 10 filter lengths).
- The Rate column is a measure of the processing time relative to real time.
So a value of 2 would indicate processing at double the playback rate. In this
case (which involves 6 48kHz 65536-tap filters) on a 2GHz Pentium M 760, 0,
2 or 4 partitions
is probably best — the more partitions, the lower the lag. A rate of about
7 is equivalent to consuming almost 15% of the CPU. Note that the
calculation of optimum attenuation involves generating, which means that
actual convolution performance is understated by about 5% (ie, the above
example would actually execute in about 38s, if the random number generation
was excluded).
- The convolution algorithm — overlap save/add — zero pads the (in this case 65536-tap)
filter to at least double its original length. The filter length is also the
product of the number of partitions and the partition length. The length may
vary because sometimes a longer filter convolves faster.
- SecLoad is the time taken to load and prepare the filter.
|