Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit ead6353

Browse files
committedJul 11, 2018
made a few minor performance tweaks to track-data loading systems
1 parent 7943c61 commit ead6353

File tree

2 files changed

+65
-56
lines changed

2 files changed

+65
-56
lines changed
 

‎src/pman/async/tasks/EfficientTrackListDataLoader.hx

Lines changed: 42 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ using pman.async.Asyncs;
3434
using pman.async.VoidAsyncs;
3535
using pman.bg.DictTools;
3636

37+
/**
38+
load data for a list of Tracks as quickly as possible
39+
**/
3740
@:access( pman.media.Track )
3841
class EfficientTrackListDataLoader extends Task1 {
3942
/* Constructor Function */
@@ -55,7 +58,7 @@ class EfficientTrackListDataLoader extends Task1 {
5558
* execute [this] Task
5659
*/
5760
override function execute(done : VoidCb):Void {
58-
trace('Starting EfficientTrackListDataLoader');
61+
//trace('Starting EfficientTrackListDataLoader');
5962
var uris:Array<String> = new Array();
6063
for (track in tracks) {
6164
uris.push( track.uri );
@@ -126,6 +129,7 @@ class EfficientTrackListDataLoader extends Task1 {
126129

127130
var track: Track;
128131
var data: TrackData;
132+
129133
for (row in rows) {
130134
track = treg[row.uri];
131135
data = new TrackData( track );
@@ -159,9 +163,6 @@ class EfficientTrackListDataLoader extends Task1 {
159163
* perform database-writes
160164
*/
161165
private function perform_writes(done : VoidCb):Void {
162-
//writes.start(function() {
163-
//done();
164-
//});
165166
writes.series( done );
166167
}
167168

@@ -211,17 +212,19 @@ class EfficientTrackListDataLoader extends Task1 {
211212
}
212213
}
213214

214-
var cpb = exec.createBatch();
215-
for (create in creates)
216-
cpb.asyncTask(cast create);
215+
//var cpb = exec.createBatch();
216+
//for (create in creates)
217+
//cpb.asyncTask(cast create);
217218

218-
for (push in pushes)
219-
cpb.asyncTask(cast push);
219+
//for (push in pushes)
220+
//cpb.asyncTask(cast push);
220221

221-
cpb.start(function() {
222-
done();
223-
});
224-
//[creates.series, pushes.series].series( done );
222+
//cpb.start(function() {
223+
//done();
224+
//});
225+
226+
/* run all created tasks */
227+
creates.concat(pushes).series( done );
225228
}
226229

227230
/**
@@ -300,30 +303,28 @@ class EfficientTrackListDataLoader extends Task1 {
300303
track._loadingData = true;
301304
track.data = data;
302305

303-
animFrame(function() {
304-
var steps = new Array();
305-
steps.push(function(nxt:VoidCb) {
306-
pull_raw(row, data, function(?error) {
307-
if (error != null) {
308-
nxt( error );
309-
}
310-
else {
311-
ensure_track_data_completeness(data, function(?error) {
312-
track._loadingData = false;
313-
if (error != null) {
314-
return nxt( error );
315-
}
316-
else {
317-
nxt();
318-
track._dataLoaded.call( data );
319-
}
320-
});
321-
}
322-
});
306+
var steps = new Array();
307+
steps.push(function(nxt: VoidCb) {
308+
pull_raw(row, data, function(?error) {
309+
if (error != null) {
310+
nxt( error );
311+
}
312+
else {
313+
ensure_track_data_completeness(data, function(?error) {
314+
track._loadingData = false;
315+
if (error != null) {
316+
return nxt( error );
317+
}
318+
else {
319+
nxt();
320+
track._dataLoaded.call( data );
321+
}
322+
});
323+
}
323324
});
324-
steps.push(data.initialize.bind(db, _));
325-
VoidAsyncs.series(steps, next);
326325
});
326+
steps.push(data.initialize.bind(db, _));
327+
steps.series( next );
327328
}
328329

329330
/**
@@ -376,8 +377,10 @@ class EfficientTrackListDataLoader extends Task1 {
376377
if (data.source.match(Create(_))) {
377378
return Complete;
378379
}
379-
var decl = TrackData.getMediaDataSourceDeclFromPropertyList( properties );
380-
return decl;
380+
else {
381+
var decl = TrackData.getMediaDataSourceDeclFromPropertyList( properties );
382+
return decl;
383+
}
381384
}
382385

383386
/**
@@ -401,7 +404,8 @@ class EfficientTrackListDataLoader extends Task1 {
401404
private function autofill_data(data:TrackData, done:VoidCb):Void {
402405
//TODO fix auto-filler so that skipping it isn't beneficial
403406
//FIXME skip this step entirely
404-
return defer(done.void());
407+
return done();
408+
405409
var autoFiller = new TrackDataAutoFill(data.track, data);
406410
autoFiller.giveCache( cache );
407411
autoFiller.run(function(?error) {
@@ -418,9 +422,6 @@ class EfficientTrackListDataLoader extends Task1 {
418422
* queue up the saving of the given TrackData
419423
*/
420424
private function schedule_data_write(data : TrackData):Void {
421-
//writes.task(@async {
422-
//data.save(next, db);
423-
//});
424425
writes.push(data.save.bind(_, db));
425426
}
426427

‎src/pman/async/tasks/LoadTrackData.hx

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -64,17 +64,24 @@ class LoadTrackData extends Task2<TrackData> {
6464
* execute [this] Task
6565
*/
6666
override function execute(done : Cb<TrackData>):Void {
67-
track._loadingData = true;
68-
[tryto_load, fill_missing_info, init_data].series(function(?error:Dynamic) {
69-
track._loadingData = false;
70-
if (error != null) {
71-
done(error, null);
72-
}
73-
else {
74-
done(null, data);
75-
track._dataLoaded.call( data );
76-
}
77-
});
67+
if ( !track._loadingData ) {
68+
track._loadingData = true;
69+
[tryto_load, fill_missing_info, init_data].series(function(?error:Dynamic) {
70+
track._loadingData = false;
71+
if (error != null) {
72+
done(error, null);
73+
}
74+
else {
75+
done(null, data);
76+
track._dataLoaded.call( data );
77+
}
78+
});
79+
}
80+
else {
81+
track._dataLoaded.once(function(dat) {
82+
done(null, dat);
83+
});
84+
}
7885
}
7986

8087
/**
@@ -149,7 +156,7 @@ class LoadTrackData extends Task2<TrackData> {
149156
}
150157
else {
151158
data.meta = meta;
152-
trace( data.meta );
159+
//trace( data.meta );
153160
push_data_to_db( done );
154161
}
155162
});
@@ -194,6 +201,7 @@ class LoadTrackData extends Task2<TrackData> {
194201
steps.push(function(next) {
195202
//FIXME skip over this step
196203
return next();
204+
197205
var filler = new TrackDataAutoFill(track, data);
198206
filler.giveCache( cache );
199207
filler.run( next );
@@ -233,16 +241,16 @@ class LoadTrackData extends Task2<TrackData> {
233241
* get the MediaDataSourceDecl for [properties]
234242
*/
235243
private function src_decl(data: TrackData):MediaDataSourceDecl {
236-
trace( data.source );
237-
trace( properties );
244+
//trace( data.source );
245+
//trace( properties );
238246

239247
// result is [Complete] if [Create(_)]
240248
if (data.source.match(Create(_))) {
241249
return Complete;
242250
}
243251

244252
var decl:MediaDataSourceDecl = TrackData.getMediaDataSourceDeclFromPropertyList( properties );
245-
trace( decl );
253+
//trace( decl );
246254
return decl;
247255
}
248256

0 commit comments

Comments
 (0)
Please sign in to comment.