Finish Tests

This commit is contained in:
PanSi21 2025-01-05 18:01:24 +01:00
parent 3315118690
commit 4992ad603e
Signed by untrusted user who does not match committer: PanSi21
GPG key ID: 755F8874C65EF462
13 changed files with 398 additions and 53 deletions

4
.gitignore vendored
View file

@ -1,8 +1,10 @@
# Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore # Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore
bin/*
# Logs # Logs
meow
logs logs
_.log _.log
npm-debug.log_ npm-debug.log_

5
.vscode/settings.json vendored Normal file
View file

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

67
Cmatrix.c Normal file
View file

@ -0,0 +1,67 @@
// For GCC and Clang
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
void parseH(char *p);
void parseL(char *p);
void matrix_multiplication(int n) {
int **a = malloc(n * sizeof(int *));
int **b = malloc(n * sizeof(int *));
int **c = malloc(n * sizeof(int *));
for (int i = 0; i < n; i++) {
a[i] = malloc(n * sizeof(int));
b[i] = malloc(n * sizeof(int));
c[i] = malloc(n * sizeof(int));
for (int j = 0; j < n; j++) {
a[i][j] = rand() % 100;
b[i][j] = rand() % 100;
c[i][j] = 0;
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
for (int k = 0; k < n; k++) {
c[i][j] += a[i][k] * b[k][j];
}
}
}
for (int i = 0; i < n; i++) {
free(a[i]);
free(b[i]);
free(c[i]);
}
free(a);
free(b);
free(c);
}
int main(int argc, char *argv[]) {
// Start measuring time
struct timespec begin, end;
clock_gettime(CLOCK_REALTIME, &begin);
// END
matrix_multiplication(1500);
// Stop measuring time and calculate the elapsed time
clock_gettime(CLOCK_REALTIME, &end);
long seconds = end.tv_sec - begin.tv_sec;
long nanoseconds = end.tv_nsec - begin.tv_nsec;
double elapsed = seconds + nanoseconds * 1e-9;
printf("Time measured: %.10f seconds.\n", elapsed);
//
return 0;
}

View file

@ -1,3 +0,0 @@
# BUN-test
Test bun linux, windows ecc

87
bebbo.c Normal file
View file

@ -0,0 +1,87 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
void parseH(char *p);
void parseL(char *p);
int main(int argc, char *argv[])
{
// Start measuring time
struct timespec begin, end;
clock_gettime(CLOCK_REALTIME, &begin);
//
char c[] = "qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890";
parseH(c);
parseL(c);
//printf("%s\n", c);
// Stop measuring time and calculate the elapsed time
clock_gettime(CLOCK_REALTIME, &end);
long seconds = end.tv_sec - begin.tv_sec;
long nanoseconds = end.tv_nsec - begin.tv_nsec;
double elapsed = seconds + nanoseconds * 1e-9;
printf("Time measured: %.10f seconds.\n", elapsed);
//
return 0;
}
void parseH(char *p)
{
int ln = strlen(p);
for (int a = 0; a < ln; a++)
{
if (p[a] < 123 && p[a] > 96)
{
p[a] = p[a] - 32;
}
}
/*
char *t ;
t=p;
while(*t!=0){
if(*t>96 && *t<123){
*t=*t-32;
}
t++;
}
*/
}
void parseL(char *p)
{
/*
char *t ;
t=p;
while(*t!=0){
if(*t>64 && *t<91){
*t=*t+32;
}
t++;
}
*/
int ln = strlen(p);
for (int a = 0; a < ln; a++)
{
if (p[a] < 91 && p[a] > 64)
{
p[a] = p[a] + 32;
}
}
}

67
bebbow.c Normal file
View file

@ -0,0 +1,67 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
void parseH(char *p);
void parseL(char *p);
int main(int argc, char *argv[])
{
// Start measuring time
struct timespec begin, end;
clock_gettime(CLOCK_REALTIME, &begin);
//
char c[] = "qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890";
parseH(c);
parseL(c);
//printf("%s\n", c);
// Stop measuring time and calculate the elapsed time
clock_gettime(CLOCK_REALTIME, &end);
long seconds = end.tv_sec - begin.tv_sec;
long nanoseconds = end.tv_nsec - begin.tv_nsec;
double elapsed = seconds + nanoseconds * 1e-9;
printf("Time measured: %.10f seconds.\n", elapsed);
//
return 0;
}
void parseH(char *p)
{
char *t ;
t=p;
while(*t!=0){
if(*t>96 && *t<123){
*t=*t-32;
}
t++;
}
}
void parseL(char *p)
{
char *t ;
t=p;
while(*t!=0){
if(*t>64 && *t<91){
*t=*t+32;
}
t++;
}
}

View file

@ -1,29 +1,50 @@
import { dlopen, FFIType } from "bun:ffi"; import { cc, dlopen, FFIType } from "bun:ffi";
import source from "./matrixcc.c" with { type: "file"};
const {
symbols: { matrixcc },
} = cc({
source,
symbols: {
matrixcc: {
args: [],
returns: "int",
},
},
});
// Funzione JavaScript equivalente // Funzione JavaScript equivalente
function jsCC() {
function jsTest() {
let c = "qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890";
let j = '';
let h = '';
const start = performance.now(); const start = performance.now();
for (let a = 0; a < 100000 ; a++) { matrixcc();
h = c.toUpperCase();
j = h.toLowerCase(); const end = performance.now();
c = j; console.log(`TinyCC Execution Time: ${end - start}ms`);
} }
// Funzione JavaScript equivalente
function jsTest() {
const start = performance.now();
matrixjs();
const end = performance.now(); const end = performance.now();
console.log(`JavaScript Execution Time: ${end - start}ms`); console.log(`JavaScript Execution Time: ${end - start}ms`);
} }
// Carica la libreria C // Carica la libreria C
const path = `./libtesticolo.so`; const path = `./bin/matrix.so`;
const { symbols } = dlopen(path, { const { symbols } = dlopen(path, {
testicolo: { matrix: {
args: [], // La funzione C non prende argomenti args: [], // La funzione C non prende argomenti
returns: FFIType.int, // La funzione C restituisce un intero returns: FFIType.int, // La funzione C restituisce un intero
}, },
@ -34,13 +55,57 @@ function cTest() {
const start = performance.now(); const start = performance.now();
// Chiama la funzione C per eseguire il test // Chiama la funzione C per eseguire il test
symbols.testicolo(); symbols.matrix();
const end = performance.now(); const end = performance.now();
console.log(`C Execution Time: ${end - start}ms`); console.log(`C Execution Time: ${end - start}ms`);
} }
// test matrix
function matrixjs( n = 1500) {
let a = [];
let b = [];
let c = [];
for (let i = 0; i < n; i++) {
a[i] = [];
b[i] = [];
c[i] = [];
for (let j = 0; j < n; j++) {
a[i][j] = Math.floor(Math.random() * 100);
b[i][j] = Math.floor(Math.random() * 100);
c[i][j] = 0;
}
}
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
for (let k = 0; k < n; k++) {
c[i][j] += a[i][k] * b[k][j];
}
}
}
for (let i = 0; i < n; i++) {
a[i].length = 0;
b[i].length = 0;
c[i].length = 0;
}
a.length = 0;
b.length = 0;
c.length = 0;
}
// Avvia i test // Avvia i test
jsCC();
jsTest(); jsTest();
cTest(); cTest();

Binary file not shown.

Binary file not shown.

45
matrix.c Normal file
View file

@ -0,0 +1,45 @@
// for shared lib
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
int matrix(int n) {
n = 1500;
int **a = malloc(n * sizeof(int *));
int **b = malloc(n * sizeof(int *));
int **c = malloc(n * sizeof(int *));
for (int i = 0; i < n; i++) {
a[i] = malloc(n * sizeof(int));
b[i] = malloc(n * sizeof(int));
c[i] = malloc(n * sizeof(int));
for (int j = 0; j < n; j++) {
a[i][j] = rand() % 100;
b[i][j] = rand() % 100;
c[i][j] = 0;
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
for (int k = 0; k < n; k++) {
c[i][j] += a[i][k] * b[k][j];
}
}
}
for (int i = 0; i < n; i++) {
free(a[i]);
free(b[i]);
free(c[i]);
}
free(a);
free(b);
free(c);
return EXIT_SUCCESS;
}

45
matrixcc.c Normal file
View file

@ -0,0 +1,45 @@
// for TinyCC
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
int matrixcc(int n) {
n = 1500;
int **a = malloc(n * sizeof(int *));
int **b = malloc(n * sizeof(int *));
int **c = malloc(n * sizeof(int *));
for (int i = 0; i < n; i++) {
a[i] = malloc(n * sizeof(int));
b[i] = malloc(n * sizeof(int));
c[i] = malloc(n * sizeof(int));
for (int j = 0; j < n; j++) {
a[i][j] = rand() % 100;
b[i][j] = rand() % 100;
c[i][j] = 0;
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
for (int k = 0; k < n; k++) {
c[i][j] += a[i][k] * b[k][j];
}
}
}
for (int i = 0; i < n; i++) {
free(a[i]);
free(b[i]);
free(c[i]);
}
free(a);
free(b);
free(c);
return EXIT_SUCCESS;
}

BIN
meow

Binary file not shown.

35
test.c
View file

@ -1,35 +0,0 @@
#include <stdlib.h>
#include <string.h>
int testicolo( void ) {
char c[] = "qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890";
for(int a=0;a<100000;a++){
parseH(&c);
parseL(&c);
// printf("%s",c);
}
return 0;
}
void parseH(char *p){
int ln=strlen(p);
for(int a=0; a<ln; a++){
if(p[a]<123 && p[a]>96){
p[a]=p[a]-32;
}
}
}
void parseL(char *p){
int ln=strlen(p);
for(int a=0; a<ln; a++){
if(p[a]<91 && p[a]>64){
p[a]=p[a]+32;
}
}
}