| queue array ans msToRun sorted | queue := SharedQueue new. array := (1 to: 1e3) asArray shuffled. ans := OrderedCollection new. (1 to: 100) detect: [:m | msToRun := [array do: [:n | [(n * m) milliSeconds asDelay wait. queue nextPut: n] fork]. sorted := (queue next: array size) isSorted] timeToRun asMilliSeconds. (ans add: {#m->m. #msToRun->msToRun. #sorted->sorted}) last value. ] ifNone: []. ^ans asArray "=> { {#m->1. #msToRun->1003. #sorted->false}. {#m->2. #msToRun->2004. #sorted->false}. {#m->3. #msToRun->3004. #sorted->false}. {#m->4. #msToRun->4016. #sorted->true}} "