New Version
- Fixed: Bugs with Queues starting with the wrong size - Fixed: ArrayGrowth for Queues was +1 instead of +50% - Added: Benchmarks with java and FastUtil
This commit is contained in:
		
							parent
							
								
									f32624d131
								
							
						
					
					
						commit
						78dfa286b0
					
				| @ -1,5 +1,10 @@ | |||||||
| # Changelog of versions | # Changelog of versions | ||||||
| 
 | 
 | ||||||
|  | ### Version 0.5.2 | ||||||
|  | - Fixed: Bugs with Queues starting with the wrong size | ||||||
|  | - Fixed: ArrayGrowth for Queues was +1 instead of +50% | ||||||
|  | - Added: Benchmarks with java and FastUtil | ||||||
|  | 
 | ||||||
| ### Version 0.5.1 | ### Version 0.5.1 | ||||||
| - Fixed: Reworked the NavigableSet/Map implementations of RBTree/AVLTree/Array Sets/Maps so they are now deemed stable. | - Fixed: Reworked the NavigableSet/Map implementations of RBTree/AVLTree/Array Sets/Maps so they are now deemed stable. | ||||||
| - Added: Another 150k Unit tests. | - Added: Another 150k Unit tests. | ||||||
|  | |||||||
| @ -18,7 +18,7 @@ repositories { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| archivesBaseName = 'Primitive Collections' | archivesBaseName = 'Primitive Collections' | ||||||
| version = '0.5.1'; | version = '0.5.2'; | ||||||
| 
 | 
 | ||||||
| sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' | sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -641,7 +641,7 @@ public class ARRAY_MAP KEY_VALUE_GENERIC_TYPE extends ABSTRACT_MAP KEY_VALUE_GEN | |||||||
| 	 | 	 | ||||||
| 	protected void grow(int newSize) { | 	protected void grow(int newSize) { | ||||||
| 		if(newSize < keys.length) return; | 		if(newSize < keys.length) return; | ||||||
| 		newSize = Math.min(newSize, keys.length == 0 ? 2 : keys.length * 2); | 		newSize = Math.max(newSize, keys.length == 0 ? 2 : keys.length * 2); | ||||||
| 		keys = Arrays.copyOf(keys, newSize); | 		keys = Arrays.copyOf(keys, newSize); | ||||||
| 		values = Arrays.copyOf(values, newSize); | 		values = Arrays.copyOf(values, newSize); | ||||||
| 	} | 	} | ||||||
|  | |||||||
| @ -114,8 +114,8 @@ public class ARRAY_FIFO_QUEUE KEY_GENERIC_TYPE extends ABSTRACT_PRIORITY_QUEUE K | |||||||
| 	 | 	 | ||||||
| 	@Override | 	@Override | ||||||
| 	public void enqueue(KEY_TYPE e) { | 	public void enqueue(KEY_TYPE e) { | ||||||
| 		array[last] = e; | 		array[last++] = e; | ||||||
| 		last = ++last % array.length; | 		if(last == array.length) last = 0; | ||||||
| 		if(last == first) expand(); | 		if(last == first) expand(); | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
|  | |||||||
| @ -19,6 +19,7 @@ import speiger.src.collections.objects.functions.consumer.BI_FROM_OBJECT_CONSUME | |||||||
| import speiger.src.collections.PACKAGE.functions.function.PREDICATE; | import speiger.src.collections.PACKAGE.functions.function.PREDICATE; | ||||||
| import speiger.src.collections.PACKAGE.functions.function.UNARY_OPERATOR; | import speiger.src.collections.PACKAGE.functions.function.UNARY_OPERATOR; | ||||||
| import speiger.src.collections.PACKAGE.utils.ARRAYS; | import speiger.src.collections.PACKAGE.utils.ARRAYS; | ||||||
|  | import speiger.src.collections.utils.SanityChecks; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * A Array Priority Queue, this is a very unoptimized implementation of the PriorityQueue for very specific usecases. |  * A Array Priority Queue, this is a very unoptimized implementation of the PriorityQueue for very specific usecases. | ||||||
| @ -70,7 +71,6 @@ public class ARRAY_PRIORITY_QUEUE KEY_GENERIC_TYPE extends ABSTRACT_PRIORITY_QUE | |||||||
| 	public ARRAY_PRIORITY_QUEUE(int size, COMPARATOR KEY_SUPER_GENERIC_TYPE comp) { | 	public ARRAY_PRIORITY_QUEUE(int size, COMPARATOR KEY_SUPER_GENERIC_TYPE comp) { | ||||||
| 		if(size < 0) throw new IllegalAccessError("Size has to be 0 or positive"); | 		if(size < 0) throw new IllegalAccessError("Size has to be 0 or positive"); | ||||||
| 		if(size > 0) array = NEW_KEY_ARRAY(size); | 		if(size > 0) array = NEW_KEY_ARRAY(size); | ||||||
| 		this.size = size; |  | ||||||
| 		comparator = comp; | 		comparator = comp; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| @ -187,7 +187,7 @@ public class ARRAY_PRIORITY_QUEUE KEY_GENERIC_TYPE extends ABSTRACT_PRIORITY_QUE | |||||||
| 	 | 	 | ||||||
| 	@Override | 	@Override | ||||||
| 	public void enqueue(KEY_TYPE e) { | 	public void enqueue(KEY_TYPE e) { | ||||||
| 		if(size == array.length) array = Arrays.copyOf(array, size+1); | 		if(size == array.length) array = Arrays.copyOf(array, (int)Math.max(Math.min((long)array.length + (array.length >> 1), SanityChecks.MAX_ARRAY_SIZE), size+1)); | ||||||
| 		if(firstIndex != -1){ | 		if(firstIndex != -1){ | ||||||
| 			int compare = comparator == null ? COMPAREABLE_TO_KEY(e, array[firstIndex]) : comparator.compare(e, array[firstIndex]); | 			int compare = comparator == null ? COMPAREABLE_TO_KEY(e, array[firstIndex]) : comparator.compare(e, array[firstIndex]); | ||||||
| 			if(compare < 0) firstIndex = size; | 			if(compare < 0) firstIndex = size; | ||||||
|  | |||||||
| @ -19,6 +19,7 @@ import speiger.src.collections.objects.functions.consumer.BI_FROM_OBJECT_CONSUME | |||||||
| import speiger.src.collections.PACKAGE.functions.function.PREDICATE; | import speiger.src.collections.PACKAGE.functions.function.PREDICATE; | ||||||
| import speiger.src.collections.PACKAGE.functions.function.UNARY_OPERATOR; | import speiger.src.collections.PACKAGE.functions.function.UNARY_OPERATOR; | ||||||
| import speiger.src.collections.PACKAGE.utils.ARRAYS; | import speiger.src.collections.PACKAGE.utils.ARRAYS; | ||||||
|  | import speiger.src.collections.utils.SanityChecks; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * A Simple Heap base Priority Queue implementation |  * A Simple Heap base Priority Queue implementation | ||||||
| @ -66,7 +67,6 @@ public class HEAP_PRIORITY_QUEUE KEY_GENERIC_TYPE extends ABSTRACT_PRIORITY_QUEU | |||||||
| 	 */ | 	 */ | ||||||
| 	public HEAP_PRIORITY_QUEUE(int size, COMPARATOR KEY_SUPER_GENERIC_TYPE comp) { | 	public HEAP_PRIORITY_QUEUE(int size, COMPARATOR KEY_SUPER_GENERIC_TYPE comp) { | ||||||
| 		if(size > 0) array = NEW_KEY_ARRAY(size); | 		if(size > 0) array = NEW_KEY_ARRAY(size); | ||||||
| 		this.size = size; |  | ||||||
| 		comparator = comp; | 		comparator = comp; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| @ -207,7 +207,7 @@ public class HEAP_PRIORITY_QUEUE KEY_GENERIC_TYPE extends ABSTRACT_PRIORITY_QUEU | |||||||
| 	 | 	 | ||||||
| 	@Override | 	@Override | ||||||
| 	public void enqueue(KEY_TYPE e) { | 	public void enqueue(KEY_TYPE e) { | ||||||
| 		if(size == array.length) array = Arrays.copyOf(array, size + 1); | 		if(size == array.length) array = Arrays.copyOf(array, (int)Math.max(Math.min((long)array.length + (array.length >> 1), SanityChecks.MAX_ARRAY_SIZE), size+1)); | ||||||
| 		array[size++] = e; | 		array[size++] = e; | ||||||
| 		ARRAYS.shiftUp(array, size-1, comparator); | 		ARRAYS.shiftUp(array, size-1, comparator); | ||||||
| 	} | 	} | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user