import { dlopen, FFIType } from "bun:ffi";

// Funzione JavaScript equivalente

function jsTest() {
  let c = "qwertyuiopasdfghjkllzxcvbnm123456789mnbvcxzlkjhgfdsapoiuytrewq1234567890";
  let j = '';
  let h = '';
  
  const start = performance.now();

  for (let a = 0; a < 100000 ; a++) {
    h = c.toUpperCase();
    j = h.toLowerCase();
    c = j;
  }

  const end = performance.now();
  console.log(`JavaScript Execution Time: ${end - start}ms`);
}


// Carica la libreria C
const path = `./libtesticolo.so`;
const { symbols } = dlopen(path, {
  testicolo: {
    args: [],  // La funzione C non prende argomenti
    returns: FFIType.int,  // La funzione C restituisce un intero
  },
});

// Funzione per il test in C
function cTest() {
  const start = performance.now();

  // Chiama la funzione C per eseguire il test
  symbols.testicolo();

  const end = performance.now();
  console.log(`C Execution Time: ${end - start}ms`);
}

// Avvia i test
jsTest();
cTest();

