Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save trycf/1ee4a427e632aba833d55b501b027168 to your computer and use it in GitHub Desktop.
Save trycf/1ee4a427e632aba833d55b501b027168 to your computer and use it in GitHub Desktop.
TryCF Gist
<cfscript>
function chunk(arr, sz) {
var out = [];
var ceil = ceiling(arr.len() / sz)
for(var i = 1; i <= ceil; i++) out.append(i == ceil ? arr.slice(1 + (i - 1) * sz, arr.len() - ((i - 1) * sz)) : arr.slice(1 + (i - 1) * sz, sz));
return out;
}
function chunk2 (required array input, required numeric chunkSize) {
var output = [];
output[1]= [];
var currentChunk = 1;
input.each((item, index) => {
output[currentChunk].append(item);
if(index % chunkSize == 0 && index < input.len()) output[++currentChunk] = [];
})
return output;
}
function chunk3(arr, sz) {
var out = [];
var ceil = ceiling(arr.len() / sz);
for(var i = 1; i <= ceil; i++) {
var t = [];
var offset = (i - 1) * sz;
if(i == ceil){
var c = arr.len() - offset < sz ? arr.len() - offset : sz;
for(var x = 1; x <= c; x++) t.append(arr[offset + x]);
}
else {
for(var x = 1; x <= sz; x++) t.append(arr[offset + x]);
}
out.append(t);
}
return out;
}
arr = [];
for(total = 1; total <= 100000; total++) arr[total] = total;
start = getTickCount();
chunk(arr, 25);
dump("chunk " & getTickCount() - start);
start = getTickCount();
chunk2(arr, 25);
dump("chunk2 " & getTickCount() - start);
start = getTickCount();
chunk3(arr, 25);
dump("chunk3 " & getTickCount() - start);
</cfscript>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment