function timer(_name = "") constructor { name = string(_name); time = get_timer(); static total = function() { var ddelta = get_timer() - time; var ss = string_format( ddelta/repeats, 1, 10); show_debug_message(string((ddelta)/1000) + "ms - " + ss + " per iteration " + name); } } #macro repeats 500 global.test_array = array_create_ext(1000, function(){return irandom(10000);}); function array_foreach_func(val, key){ global.test_array[key] = irandom(10000); }; function array_map_ext_func(val, key){ return irandom(10000); } function test() { var i, t; show_debug_message("... testing"); t = new timer("repeat"); repeat(repeats) { i = 0; repeat(1000) { global.test_array[i] = irandom(10000); i++; } } t.total(); t = new timer("for"); repeat(repeats) { for(i = 0; i < 1000; i++) { global.test_array[i] = irandom(10000); } } t.total(); t = new timer("array_foreach"); repeat(repeats) { array_foreach(global.test_array, function(val, key){ global.test_array[key] = irandom(10000); }); } t.total(); t = new timer("array_foreach + array_foreach_func()"); repeat(repeats) { array_foreach(global.test_array, array_foreach_func); } t.total(); t = new timer("array_map_ext"); repeat(repeats) { array_map_ext(global.test_array, function(val, key){ return val+1; }); } t.total(); t = new timer("array_map_ext + array_map_ext_func"); repeat(repeats) { array_map_ext(global.test_array, array_map_ext_func); } t.total(); t = new timer("array_map_ext + method:array_map_ext_func"); repeat(repeats) { array_map_ext(global.test_array, method({}, array_map_ext_func)); } t.total(); }