MCPcopy Create free account
hub / github.com/audacity/audacity / Benchmark

Method Benchmark

src/effects/Equalization48x.cpp:426–502  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

424#include <wx/stopwatch.h>
425
426bool EffectEqualization48x::Benchmark(EffectEqualization* effectEqualization)
427{
428 mEffectEqualization=effectEqualization;
429 mEffectEqualization->CopyInputTracks(); // Set up mOutputTracks.
430 bool bBreakLoop = false;
431
432 TableUsage(sMathPath);
433 if(sMathPath) // !!! Filter MUST BE QUAD WORD ALIGNED !!!!
434 mEffectEqualization->mM=(mEffectEqualization->mM&(~15))+1;
435 AllocateBuffersWorkers(MATH_FUNCTION_THREADED);
436 auto cleanup = finally( [&] { FreeBuffersWorkers(); } );
437 long times[] = { 0,0,0,0,0 };
438 wxStopWatch timer;
439 mBenching = true;
440 for(int i = 0; i < 5 && !bBreakLoop; i++) {
441 int localMathPath;
442 switch(i) {
443 case 0: localMathPath=MATH_FUNCTION_SSE|MATH_FUNCTION_THREADED;
444 if(!sMathCaps.SSE)
445 localMathPath=-1;
446 break;
447 case 1: localMathPath=MATH_FUNCTION_SSE;
448 if(!sMathCaps.SSE)
449 localMathPath=-1;
450 break;
451 case 2: localMathPath=MATH_FUNCTION_SEGMENTED_CODE;
452 break;
453 case 3: localMathPath=MATH_FUNCTION_THREADED|MATH_FUNCTION_SEGMENTED_CODE;
454 break;
455 case 4: localMathPath=0;
456 break;
457 default: localMathPath=-1;
458 }
459 if(localMathPath >= 0) {
460 timer.Start();
461 int count = 0;
462 for (auto track :
463 mEffectEqualization->mOutputTracks->Selected< WaveTrack >() ) {
464 double trackStart = track->GetStartTime();
465 double trackEnd = track->GetEndTime();
466 double t0 = mEffectEqualization->mT0 < trackStart? trackStart: mEffectEqualization->mT0;
467 double t1 = mEffectEqualization->mT1 > trackEnd? trackEnd: mEffectEqualization->mT1;
468
469 if (t1 > t0) {
470 auto start = track->TimeToLongSamples(t0);
471 auto end = track->TimeToLongSamples(t1);
472 auto len = end - start;
473 bBreakLoop=RunFunctionSelect( localMathPath, count, track, start, len);
474 if( bBreakLoop )
475 break;
476 }
477 count++;
478 }
479 times[i]=timer.Time();
480 }
481 }
482 mBenching=false;
483 bBreakLoop=false;

Callers

nothing calls this directly

Calls 8

TableUsageFunction · 0.85
finallyFunction · 0.85
TimeToLongSamplesMethod · 0.80
TimeMethod · 0.80
MessageBoxMethod · 0.80
StartMethod · 0.45
GetStartTimeMethod · 0.45
GetEndTimeMethod · 0.45

Tested by

no test coverage detected