mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-30 19:00:09 +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...
 | ||||
| //
 | ||||
| // if target is given this will merge gids into target...
 | ||||
| //
 | ||||
| // NOTE: the resulting list will always be sorted...
 | ||||
| // NOTE: this will skip all elements not in order
 | ||||
| function makeSparceGIDList(gids, data){ | ||||
| function populateSparceGIDList(gids, target, data){ | ||||
| 	data = data == null ? DATA : data | ||||
| 	var order = data.order | ||||
| 	var res = [] | ||||
| 	var res = target == null ? [] : target | ||||
| 
 | ||||
| 	gids.forEach(function(e){ | ||||
| 		var i = order.indexOf(e) | ||||
| @ -599,9 +601,11 @@ function makeSparceGIDList(gids, data){ | ||||
| // Remove all the undefined's form a sparse list...
 | ||||
| //
 | ||||
| function compactSparceList(lst){ | ||||
| 	return lst.filter(function(e){ | ||||
| 		return e !== undefined | ||||
| 	}) | ||||
| 	// XXX is it normal that .filter(..) skips undefined values?
 | ||||
| 	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
 | ||||
| //
 | ||||
| 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 _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...
 | ||||
| var getMarkedGIDBefore = makeGIDBeforeGetterFromList( | ||||
| @ -692,7 +715,7 @@ var loadFileMarks = makeFileLoader( | ||||
| 		MARKED_FILE_PATTERN,  | ||||
| 		[], | ||||
| 		function(data){  | ||||
| 			MARKED = makeSparceGIDList(data) | ||||
| 			MARKED = populateSparceGIDList(data) | ||||
| 		}, | ||||
| 		'marksLoaded') | ||||
| 
 | ||||
| @ -747,7 +770,7 @@ function setupMarks(viewer){ | ||||
| 			}) | ||||
| 		}) | ||||
| 		.on('sortedImages', function(){ | ||||
| 			MARKED = makeSparceGIDList(MARKED) | ||||
| 			MARKED = populateSparceGIDList(MARKED) | ||||
| 			marksUpdated() | ||||
| 		}) | ||||
| 		.on('horizontalShiftedImage', function(evt, gid, direction){ | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user