Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- tyler@mac ~/Documents> gcc -O3 test.c -octest ; ./ctest
- C fast : 3010us
- C slow : 22876us
- tyler@mac ~/Documents> clang -O3 test.c -octest ; ./ctest
- C fast : 3297us
- C slow : 26991us
- tyler@mac ~/Documents> dmd -L-w -w -O -run test.d
- D together : 485us
- D idiomatic: 1267us
- D fast : 5071us
- D slow : 23423us
- tyler@mac ~/Documents> ldc2 -L-w -w -O -run test.d
- D together : 606us
- D idiomatic: 646us
- D fast : 692us
- D slow : 29892us
- ##########################################################################
- # test.c
- #include <stdio.h>
- #include <time.h>
- #define SIZE 1024
- int arr[SIZE][SIZE];
- void add_1_fast() {
- for (int i=0; i<SIZE; i++) {
- for (int j=0; j<SIZE; j++) {
- arr[i][j] += 1;
- }
- }
- }
- void add_1_slow() {
- for (int i=0; i<SIZE; i++) {
- for (int j=0; j<SIZE; j++) {
- arr[j][i] += 1;
- }
- }
- }
- int main() {
- clock_t x, y;
- x = clock();
- add_1_fast();
- y = clock();
- if (CLOCKS_PER_SEC == 1000000) {
- printf("C fast : %lius\n", y - x);
- } else {
- printf("C fast : %fus\n", (double)(y - x) / CLOCKS_PER_SEC * 1000000);
- }
- x = clock();
- add_1_slow();
- y = clock();
- if (CLOCKS_PER_SEC == 1000000) {
- printf("C slow : %lius\n", y - x);
- } else {
- printf("C slow : %fus\n", (double)(y - x) / CLOCKS_PER_SEC * 1000000);
- }
- }
- ###################################################################################
- # test.d
- import std.stdio;
- import std.datetime;
- enum size = 1024;
- int[size][size] arr;
- auto add_1_together() {
- foreach (ref x; arr) {
- x[] += 1;
- }
- }
- auto add_1_idiomatic() {
- foreach (ref x; arr) {
- foreach (ref y; x) {
- y += 1;
- }
- }
- }
- auto add_1_fast() {
- for (int i=0; i<size; i++) {
- for (int j=0; j<size; j++) {
- arr[i][j] += 1;
- }
- }
- }
- auto add_1_slow() {
- for (int i=0; i<size; i++) {
- for (int j=0; j<size; j++) {
- arr[j][i] += 1;
- }
- }
- }
- void main() {
- StopWatch sw1, sw2, sw3, sw4;
- sw1.start();
- add_1_together();
- writeln("D together : ", sw1.peek().usecs, "us");
- sw1.stop();
- sw2.start();
- add_1_idiomatic();
- writeln("D idiomatic: ", sw2.peek().usecs, "us");
- sw2.stop();
- sw3.start();
- add_1_fast();
- writeln("D fast : ", sw3.peek().usecs, "us");
- sw3.stop();
- sw4.start();
- add_1_slow();
- writeln("D slow : ", sw4.peek().usecs, "us");
- sw4.stop();
- writeln(arr[45][199]);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement