repositories
/
poolifier.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
test: improve median computation test
[poolifier.git]
/
src
/
utils.ts
diff --git
a/src/utils.ts
b/src/utils.ts
index d85c5ba58b4988fad867a9b35f9dca5bb5bb2b45..176d2c4f875fb2b3fc695ad419a8398d12467bb5 100644
(file)
--- a/
src/utils.ts
+++ b/
src/utils.ts
@@
-1,3
+1,5
@@
+import type { WorkerChoiceStrategyOptions } from './pools/selection-strategies/selection-strategies-types'
+
/**
* An intentional empty function.
*/
/**
* An intentional empty function.
*/
@@
-6,19
+8,36
@@
export const EMPTY_FUNCTION: () => void = Object.freeze(() => {
})
/**
})
/**
- * Returns the median of the given data set.
+ * Default worker choice strategy options.
+ */
+export const DEFAULT_WORKER_CHOICE_STRATEGY_OPTIONS: WorkerChoiceStrategyOptions =
+ {
+ medRunTime: false
+ }
+
+/**
+ * Compute the median of the given data set.
*
* @param dataSet - Data set.
* @returns The median of the given data set.
*/
export const median = (dataSet: number[]): number => {
*
* @param dataSet - Data set.
* @returns The median of the given data set.
*/
export const median = (dataSet: number[]): number => {
+ if (Array.isArray(dataSet) && dataSet.length === 0) {
+ return 0
+ }
if (Array.isArray(dataSet) && dataSet.length === 1) {
return dataSet[0]
}
const sortedDataSet = dataSet.slice().sort((a, b) => a - b)
if (Array.isArray(dataSet) && dataSet.length === 1) {
return dataSet[0]
}
const sortedDataSet = dataSet.slice().sort((a, b) => a - b)
- const middleIndex = Math.floor(sortedDataSet.length / 2)
- if (sortedDataSet.length % 2 === 0) {
- return sortedDataSet[middleIndex / 2]
- }
- return (sortedDataSet[middleIndex - 1] + sortedDataSet[middleIndex]) / 2
+ return (
+ (sortedDataSet[(sortedDataSet.length - 1) >> 1] +
+ sortedDataSet[sortedDataSet.length >> 1]) /
+ 2
+ )
}
}
+
+export const isPlainObject = (obj: unknown): boolean =>
+ typeof obj === 'object' &&
+ obj !== null &&
+ obj?.constructor === Object &&
+ Object.prototype.toString.call(obj) === '[object Object]'