@@ -20,27 +20,13 @@ import {
2020} from "./lib/audio/stem-archive" ;
2121import { encodeWavF32 } from "./lib/audio/wav" ;
2222import { separateInWorker } from "./lib/audio/worker-client" ;
23+ import { createBenchmarkRecorder , isBenchmarkMode } from "./lib/benchmark" ;
2324import { loadPreferences , savePreferences } from "./lib/preferences" ;
2425import { updateRunProgress , type RunProgress } from "./lib/progress/model" ;
25- import type { ChunkTiming } from "./lib/progress/model" ;
2626import { RunProgressPanel } from "./lib/progress/panel" ;
2727
28- declare global {
29- interface Window {
30- __demucsBenchmarkResult ?: BenchmarkResult ;
31- }
32- }
33-
34- interface BenchmarkResult {
35- loadMs : number ;
36- inferenceMs : number ;
37- finalizeMs : number ;
38- totalMs : number ;
39- chunks : ChunkTiming [ ] ;
40- }
41-
4228export function App ( ) {
43- const benchmarkMode = new URLSearchParams ( location . search ) . has ( "benchmark" ) ;
29+ const benchmarkMode = isBenchmarkMode ( ) ;
4430 // synchronize preferences with localStorage
4531 const [ preferences , setPreferences ] = useState ( loadPreferences ) ;
4632 useEffect ( ( ) => savePreferences ( preferences ) , [ preferences ] ) ;
@@ -153,18 +139,8 @@ export function App() {
153139 models : [ ] ,
154140 finalizeMs : 0 ,
155141 } ) ;
156- if ( benchmarkMode ) {
157- delete window . __demucsBenchmarkResult ;
158- }
159142 const started = performance . now ( ) ;
160- let benchmarkProgress : RunProgress | null = {
161- phase : "preparing" ,
162- startedAt,
163- done : 0 ,
164- total : 0 ,
165- models : [ ] ,
166- finalizeMs : 0 ,
167- } ;
143+ const recordBenchmark = createBenchmarkRecorder ( startedAt ) ;
168144 const request : SeparateRequest = {
169145 left : decodedAudio . left . slice ( ) ,
170146 right : decodedAudio . right . slice ( ) ,
@@ -175,33 +151,10 @@ export function App() {
175151 } ;
176152 const separated = await separateInWorker ( request , {
177153 onProgress : ( event , at ) => {
178- if ( benchmarkProgress ) {
179- benchmarkProgress = updateRunProgress ( benchmarkProgress , event , at ) ;
180- }
154+ recordBenchmark ?.( event , at ) ;
181155 setRunProgress ( ( progress ) =>
182156 progress ? updateRunProgress ( progress , event , at ) : progress ,
183157 ) ;
184- if (
185- benchmarkMode &&
186- event . type === "finalized" &&
187- benchmarkProgress
188- ) {
189- window . __demucsBenchmarkResult = {
190- loadMs : benchmarkProgress . models . reduce (
191- ( sum , item ) => sum + ( item . loadMs ?? 0 ) ,
192- 0 ,
193- ) ,
194- inferenceMs : benchmarkProgress . models . reduce (
195- ( sum , item ) => sum + ( item . inferenceMs ?? 0 ) ,
196- 0 ,
197- ) ,
198- finalizeMs : benchmarkProgress . finalizeMs ,
199- totalMs : at - benchmarkProgress . startedAt ,
200- chunks : benchmarkProgress . models . flatMap (
201- ( item ) => item . chunkTimings ,
202- ) ,
203- } ;
204- }
205158 } ,
206159 } ) ;
207160 const nextOutputs = separated . map ( ( output ) => {
0 commit comments