<?php
ini_set('memory_limit', '20480M'); // Increase the memory limit to 20480MB (20GB)
include_once("NumpyLight.php");
use NameSpaceNumpyLight\NumpyLight as NumpyLight;
function generateRandomMatrix($rows, $cols, $min = 0.0, $max = 1.0) {
$matrix = [];
for ($i = 0; $i < $rows; $i++) {
$row = [];
for ($j = 0; $j < $cols; $j++) {
$row[] = $min + mt_rand() / mt_getrandmax() * ($max - $min);
}
$matrix[] = $row;
}
return $matrix;
}
// Function to write data to a CSV file
function writeCSV($data, $filename = 'matrix_performance.csv') {
$file = fopen($filename, 'w');
foreach ($data as $row) {
fputcsv($file, $row);
}
fclose($file);
}
// Matrix sizes to test
$matrixSizes = [];
for ($i=1; $i < 500; $i++) {
$matrixSizes[] = $i*10;
}
// Initialize an array to store results
$results = [];
$results[] = ['Matrix Size', 'Save Time', 'Dot Product Time'];
foreach ($matrixSizes as $size) {
$matrixA = generateRandomMatrix($size, $size, 0.1, 0.2);
$array = ["a" => $matrixA, "b" => $matrixA];
echo "\n\n SIZE: $size \n\n";
// Measure the time for saving the matrix
$startTime = microtime(true);
file_put_contents("matrix.json", json_encode($array));
$endTime = microtime(true);
$saveTime = $endTime - $startTime;
echo "Saving executed time $saveTime seconds.\n";
// Measure the time for dot product
$startTime = microtime(true);
$dotproductOutput = NumpyLight::dot($matrixA, $matrixA);
$endTime = microtime(true);
$dotProductTime = $endTime - $startTime;
echo "Dot product executed time $dotProductTime seconds.\n";
// Store the results
$results[] = [$size, $saveTime, $dotProductTime];
}
// Write results to CSV
writeCSV($results,$filename = "matrix_performance_with_c_implimentaion.csv");
?>
|