mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-30 10:50:08 +00:00
experimenting with sparse lists...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
6fe9276cee
commit
c945b3413f
16
ui/data.js
16
ui/data.js
@ -577,12 +577,14 @@ function binSearch(target, lst, check, return_position, get){
|
|||||||
|
|
||||||
// Make a sparse gid list...
|
// Make a sparse gid list...
|
||||||
//
|
//
|
||||||
|
// if target is given this will merge gids into target...
|
||||||
|
//
|
||||||
// NOTE: the resulting list will always be sorted...
|
// NOTE: the resulting list will always be sorted...
|
||||||
// NOTE: this will skip all elements not in order
|
// NOTE: this will skip all elements not in order
|
||||||
function makeSparceGIDList(gids, data){
|
function populateSparceGIDList(gids, target, data){
|
||||||
data = data == null ? DATA : data
|
data = data == null ? DATA : data
|
||||||
var order = data.order
|
var order = data.order
|
||||||
var res = []
|
var res = target == null ? [] : target
|
||||||
|
|
||||||
gids.forEach(function(e){
|
gids.forEach(function(e){
|
||||||
var i = order.indexOf(e)
|
var i = order.indexOf(e)
|
||||||
@ -599,9 +601,11 @@ function makeSparceGIDList(gids, data){
|
|||||||
// Remove all the undefined's form a sparse list...
|
// Remove all the undefined's form a sparse list...
|
||||||
//
|
//
|
||||||
function compactSparceList(lst){
|
function compactSparceList(lst){
|
||||||
return lst.filter(function(e){
|
// XXX is it normal that .filter(..) skips undefined values?
|
||||||
return e !== undefined
|
return lst.filter(function(){ return true })
|
||||||
})
|
//return lst.filter(function(e){
|
||||||
|
// return e !== undefined
|
||||||
|
//})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -636,7 +640,7 @@ function compactSparceList(lst){
|
|||||||
// On the down side, this has some memory overhead -- ~ N - n * ref
|
// On the down side, this has some memory overhead -- ~ N - n * ref
|
||||||
//
|
//
|
||||||
function fastSortGIDsByOrder(gids, data){
|
function fastSortGIDsByOrder(gids, data){
|
||||||
return compactSparceList(makeSparceGIDList(gids, data))
|
return compactSparceList(populateSparceGIDList(gids, data))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
27
ui/marks.js
27
ui/marks.js
@ -139,6 +139,29 @@ var getUnmarked = makeUnmarkedLister(
|
|||||||
function(){ return MARKED },
|
function(){ return MARKED },
|
||||||
function(){ return _UNMARKED_CACHE })
|
function(){ return _UNMARKED_CACHE })
|
||||||
|
|
||||||
|
// these two are about 3 orders of magnitude faster than the above...
|
||||||
|
// ...which is better I do not yet know...
|
||||||
|
function getUnmarked_s0(){
|
||||||
|
var order = DATA.order
|
||||||
|
var res = []
|
||||||
|
for(var i=0; i < order.length; i++){
|
||||||
|
if(MARKED[i] == null){
|
||||||
|
res.push(order[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//return res
|
||||||
|
return getLoadedGIDs(res)
|
||||||
|
}
|
||||||
|
function getUnmarked_s1(){
|
||||||
|
var res = DATA.order.slice()
|
||||||
|
// XXX is it normal that .map() and .forEach() skip undefined values?
|
||||||
|
MARKED.map(function(e, i){
|
||||||
|
delete res[i]
|
||||||
|
})
|
||||||
|
//return compactSparceList(res)
|
||||||
|
return getLoadedGIDs(compactSparceList(res))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// XXX make this undefined tolerant -- sparse list compatibility...
|
// XXX make this undefined tolerant -- sparse list compatibility...
|
||||||
var getMarkedGIDBefore = makeGIDBeforeGetterFromList(
|
var getMarkedGIDBefore = makeGIDBeforeGetterFromList(
|
||||||
@ -692,7 +715,7 @@ var loadFileMarks = makeFileLoader(
|
|||||||
MARKED_FILE_PATTERN,
|
MARKED_FILE_PATTERN,
|
||||||
[],
|
[],
|
||||||
function(data){
|
function(data){
|
||||||
MARKED = makeSparceGIDList(data)
|
MARKED = populateSparceGIDList(data)
|
||||||
},
|
},
|
||||||
'marksLoaded')
|
'marksLoaded')
|
||||||
|
|
||||||
@ -747,7 +770,7 @@ function setupMarks(viewer){
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
.on('sortedImages', function(){
|
.on('sortedImages', function(){
|
||||||
MARKED = makeSparceGIDList(MARKED)
|
MARKED = populateSparceGIDList(MARKED)
|
||||||
marksUpdated()
|
marksUpdated()
|
||||||
})
|
})
|
||||||
.on('horizontalShiftedImage', function(evt, gid, direction){
|
.on('horizontalShiftedImage', function(evt, gid, direction){
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user