sfida... elenco parziale e regole

pierpaolo.bruno-0574 a poste.it pierpaolo.bruno-0574 a poste.it
Lun 11 Lug 2005 14:37:38 CEST


awk + veloce di php ... non me lo sarei mai  aspettato che awk fosse 
veloce....
si scoprono sempre cose nuove :))
ciao
PP

Paolo Certo wrote:

>>Insomma, al momento come classifica abbiamo (dal pių veloce al pių lento):
>>- C
>>- awk
>>- php
>>
>>Chi si inserisce?
>>    
>>
>
>Pių di questo non son riuscito a fare.
>Ma č stato divertente.
>
>Paolo
>
>---------------------------------------------------------------------------------
>Risultati
>
>[max gufisummercode]$ time php max_vector2.php array.txt.10
>
>somma massima: 150305
>
>real    0m0.465s
>user    0m0.229s
>sys     0m0.026s
>[max gufisummercode]$ time php max_vector2.php array.txt.100
>
>somma massima: 866703
>
>real    0m0.313s
>user    0m0.203s
>sys     0m0.091s
>[max gufisummercode]$ time php max_vector2.php array.txt.1000
>
>somma massima: 3773846
>
>real    0m0.369s
>user    0m0.242s
>sys     0m0.088s
>[max gufisummercode]$ time php max_vector2.php array.txt.10000
>
>somma massima: 4166171
>
>real    0m0.582s
>user    0m0.516s
>sys     0m0.041s
>[max gufisummercode]$ time php max_vector2.php array.txt.100000
>
>somma massima: 23919182
>
>real    0m3.381s
>user    0m3.216s
>sys     0m0.112s
>[max gufisummercode]$
>
>-------------------------------------------------------------------------------------
>Lo script
>
>#!/usr/local/bin/php
><?php
>/*
> * max_vector2.php
> * Paolo Certo, 2005.
> *
> * parametro: nome file da esaminare
> */
>
>// check esistenza file
>if (trim($argv[0]) == "" || !file_exists("./".trim($argv[1]))) {
>	echo "ATTENZIONE! Nome file non fornito o inesatto.\n";
>}
>else {
>
>	$result = 0;
>	$array = array();
>	
>	// legge file e elabora
>	$handle = fopen("./".trim($argv[1]), "r");
>	if($handle) {
>		while (!feof($handle)) {
>			
>			while (!feof($handle) && sizeof($array) < 2) {
>				array_push($array, intval(fgets($handle)));
>			}
>			
>			$sum = array_sum($array);
>			
>			if ($array[0] > 0 || $sum > max($array)) {
>				// entrambi positivi
>				// primo positivo > di secondo negativo
>				$array[0] = $sum;
>				array_pop($array);
>				if ($array[0] > $result) {
>					$result = $sum;
>				}
>			}
>			else if ($array[1] > 0) {
>				// primo negativo e secondo positivo
>				array_shift($array);
>			}
>			else {
>				// entrambi negativi
>				$array = array();
>			}
>		
>		}
>		fclose($handle);
>	}
>	
>	// presentazione risultati
>	echo "\nsomma massima: $result\n";
>}
>?>
>
>---------------------------------------------------------------
>
>  
>



Maggiori informazioni sulla lista devel