Witam.
PHP znam dość dobrze. Wiedząc że jest on wolniejszy od Javy, postanowiłem przerobić mój skrypt.
Pierwszym zadaniem jakie wykonałem to wyświetlenie listy plików i tu wynik wyszedł gorzej niż sądziłem, może robię coś źle, ale PHP w tym przypadku jest szybszy od Javy.
Kolejnym etapem będzie obróbka tych plików z formatu csv do jednego pliku xml.
Później eksport z pliku xml do bazy danych.
Czy końcowy rezultat będzie lepszy niż początek, czyli kod Javy będzie szybszy od PHP?
Ps. ten skrypt Javy piszę w celach edukacyjnych, jednak mimo tego oczekuję wzrostu szybkości...
Poniżej skrypty:
PHP:
<?php
class ListFiles {
public function currentMillis() {
list($usec, $sec) = explode(" ", microtime());
return round(((float)$usec + (float)$sec) * 1000);
}
public function main()
{
$dirPath = 'z:/app/data/import/';
$started = $this->currentMillis();
$fileList = array();
foreach (new \DirectoryIterator($dirPath) as $file) {
$filePart = explode('.', $file->getFilename());
$fileName = isset($filePart[0]) ? $filePart[0] : '';
$fileExtension = isset($filePart[1]) ? $filePart[1] : '';
if ($fileExtension == 'prn') {
$filePath = $dirPath . $file->getFilename();
$fileList[] = $filePath;
}
}
echo $this->currentMillis() - $started;
}
}
$listFiles = new ListFiles();
$listFiles->main();
?>
Czas wykonywania kodu: ~14ms
Java:
import java.io.File;
public class ListFiles
{
public static void main(String[] args)
{
// Directory path here
String path = "z:/app/data/import/";
String files;
File folder = new File(path);
File[] listOfFiles = folder.listFiles();
long startTime = System.currentTimeMillis();
for (int i = 0; i < listOfFiles.length; i++)
{
if (listOfFiles[i].isFile())
{
files = listOfFiles[i].getName();
if (files.endsWith(".prn"))
{
// System.out.println(files);
}
}
}
long endTime = System.currentTimeMillis();
long totalTime = endTime - startTime;
System.out.println(totalTime);
}
}
Czas wykonywania kodu: ~9000ms
Powyższe kody testuję na 3400 plikach.
Podejrzewam, że PHP wykorzystuje funkcje systemowe, a Java własne wbudowane...
Proszę o pomoc w jaki sposób przyśpieszyć kod javy.
Z góry dziękuję.