diff --git a/.gitignore b/.gitignore index 2c71022..b234ca5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore +BuildBIN # Logs diff --git a/.vscode/settings.json b/.vscode/settings.json index bf32034..e7d9621 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,6 @@ { "files.associations": { - "time.h": "c" + "time.h": "c", + "stdio.h": "c" } } \ No newline at end of file diff --git a/README.md b/README.md index 48dc076..b0603b7 100644 --- a/README.md +++ b/README.md @@ -23,4 +23,50 @@ pansi21@legolas-pX:~/Scrivania/BUN-test$ bun run index.js TinyCC Execution Time: 39841.047652ms JavaScript Execution Time: 151445.86563ms C Execution Time: 11306.60097ms -``` \ No newline at end of file +``` + + +## GCC senza ottimizzazioni ( -O0 ) + +```sh +pansi21@legolas-pX:~/Scrivania/BUN-test$ bun run index.js +C Execution Time: 2210.778096ms +TinyCC Execution Time: 9515.602825ms +JavaScript Execution Time: 17464.264817ms + +pansi21@legolas-pX:~/Scrivania/BUN-test$ gcc -Wall -O0 -shared matrix.c -o bin/matrix03.so +pansi21@legolas-pX:~/Scrivania/BUN-test$ bun run index.js +C Execution Time: 10084.689972ms +TinyCC Execution Time: 9475.667019999999ms +JavaScript Execution Time: 17810.901714ms +pansi21@legolas-pX:~/Scrivania/BUN-test$ +``` + + +## SetN = 2000 + +```sh +pansi21@legolas-pX:~/Scrivania/BUN-test$ gcc -Wall -O3 -shared matrix.c -o bin/matrix03.so +pansi21@legolas-pX:~/Scrivania/BUN-test$ bun run index.js +C Execution Time: 48145.866321ms +TinyCC Execution Time: 102745.97170400001ms +JavaScript Execution Time: 397706.84388400003ms +``` + +## 1500 +```sh +pansi21@legolas-pX:~/Scrivania/BUN-test$ bun run index.js +C Execution Time: 10959.741538999999ms +TinyCC Execution Time: 36574.850994ms +JavaScript Execution Time: 137350.96834400002ms +``` + +## 1000 + +```sh +pansi21@legolas-pX:~/Scrivania/BUN-test$ gcc -Wall -O3 -shared matrix.c -o bin/matrix03.so +pansi21@legolas-pX:~/Scrivania/BUN-test$ bun run index.js +C Execution Time: 2267.1350589999997ms +TinyCC Execution Time: 10732.041204000001ms +JavaScript Execution Time: 19499.030189999998ms +``` diff --git a/bin/matrix03.so b/bin/matrix03.so index 2818b84..4133371 100755 Binary files a/bin/matrix03.so and b/bin/matrix03.so differ diff --git a/index.js b/index.js index c9e3d1d..fb1fe04 100644 --- a/index.js +++ b/index.js @@ -3,13 +3,16 @@ import { cc, dlopen, FFIType } from "bun:ffi"; // START TINYCC import source from "./matrixcc.c" with { type: "file"}; +const setN = 1000; + + const { symbols: { matrixcc }, } = cc({ source, symbols: { matrixcc: { - args: [], + args: [ FFIType.int ], returns: FFIType.int, }, }, @@ -20,7 +23,7 @@ function jsCC() { const start = performance.now(); - symbols.matrixcc(); + matrixcc( setN ); const end = performance.now(); console.log(`TinyCC Execution Time: ${end - start}ms`); @@ -35,7 +38,7 @@ function jsCC() { const path = `./bin/matrix03.so`; const { symbols } = dlopen(path, { matrix: { - args: [], // La funzione C non prende argomenti + args: [ FFIType.int ], // La funzione C non prende argomenti returns: FFIType.int, // La funzione C restituisce un intero }, }); @@ -45,7 +48,7 @@ function cTest() { const start = performance.now(); // Chiama la funzione C per eseguire il test - symbols.matrix(); + symbols.matrix( setN ); const end = performance.now(); console.log(`C Execution Time: ${end - start}ms`); @@ -66,7 +69,7 @@ function jsTest() { } // test matrix JS -function matrixjs( n = 1500) { +function matrixjs( n = setN) { let a = []; let b = []; @@ -108,8 +111,8 @@ function matrixjs( n = 1500) { // Avvia i test +cTest(); jsCC(); jsTest(); -cTest(); diff --git a/matrix.c b/matrix.c index 87244d2..037b23c 100644 --- a/matrix.c +++ b/matrix.c @@ -6,7 +6,7 @@ #include int matrix(int n) { - n = 1500; + n = 1000; int **a = malloc(n * sizeof(int *)); int **b = malloc(n * sizeof(int *)); diff --git a/matrixcc.c b/matrixcc.c index c7d748a..e599f5c 100644 --- a/matrixcc.c +++ b/matrixcc.c @@ -6,7 +6,7 @@ #include int matrixcc(int n) { - n = 1500; + //n = 1500; int **a = malloc(n * sizeof(int *)); int **b = malloc(n * sizeof(int *));