This commit is contained in:
PanSi21 2025-01-05 19:11:48 +01:00
parent 53528bc35e
commit 41118a002a
Signed by untrusted user who does not match committer: PanSi21
GPG key ID: 755F8874C65EF462
7 changed files with 61 additions and 10 deletions

1
.gitignore vendored
View file

@ -1,5 +1,6 @@
# Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore
BuildBIN
# Logs

View file

@ -1,5 +1,6 @@
{
"files.associations": {
"time.h": "c"
"time.h": "c",
"stdio.h": "c"
}
}

View file

@ -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
```
```
## 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
```

Binary file not shown.

View file

@ -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();

View file

@ -6,7 +6,7 @@
#include <time.h>
int matrix(int n) {
n = 1500;
n = 1000;
int **a = malloc(n * sizeof(int *));
int **b = malloc(n * sizeof(int *));

View file

@ -6,7 +6,7 @@
#include <time.h>
int matrixcc(int n) {
n = 1500;
//n = 1500;
int **a = malloc(n * sizeof(int *));
int **b = malloc(n * sizeof(int *));