import std.stdio, std.datetime, std.parallelism, core.thread; struct cArr { int[] Array; void calc() { long result = 0; foreach (num; Array) { Thread.sleep(dur!("msecs")(50)); result += num; } writeln(result); } } void performMultithreading() { auto currTime = Clock.currTime(); int[][] arr = [ [500, 500, 500], [500, 500, 500], [500, 500, 500], [500, 500, 500] ]; auto datas = [cArr(arr[0]), cArr(arr[1]), cArr(arr[2]), cArr(arr[3])]; foreach (data; parallel(datas)) data.calc(); writeln("Duration with multithreading: ", Clock.currTime() - currTime); } void performSinglethreading() { auto currTime = Clock.currTime(); int[][] arr = [ [500, 500, 500], [500, 500, 500], [500, 500, 500], [500, 500, 500] ]; auto datas = [cArr(arr[0]), cArr(arr[1]), cArr(arr[2]), cArr(arr[3])]; foreach (data; datas) data.calc(); writeln("Duration with singlethreading: ", Clock.currTime() - currTime); } void main() { performSinglethreading(); performMultithreading(); }