Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Optymalizacja...
cahe
post 7.08.2003, 11:41:28
Post #1





Grupa: Zarejestrowani
Postów: 223
Pomógł: 0
Dołączył: 22.03.2003

Ostrzeżenie: (0%)
-----


Mam oto taki skrypt:

[php:1:3bff2b36d8]<?php
set_time_limit(0);
error_reporting(E_ALL);
function getmicrotime()
{
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
$time_start = getmicrotime(); // pobranie czasu poczatkowego
$glowny = file("glowny.txt");
$porownanie = file("telefony.txt");
$adresy = file("klienci.txt");
$i = 0;
$n = 0;
echo('Trwa liczenie danych... to moze portrwac do 5 minut<br><pre>');
echo('0% 50% 100%' . "n");
flush();

foreach($glowny as $main_item)
{
$n++;
$main_item = trim($main_item);
if(!isset($nowa_partia))
{
if(ereg("^[0-9]{4}-[0-9]{2}-[0-9]{2}$", $main_item))
{
$nowa_partia = 1;
$data = $main_item;
}
if(ereg("^[0-9]+|[0-9]+$", $main_item) OR ereg("^[0-9]+$", $main_item))
{
$dane = explode("|", $main_item);
$imei = $dane[0];
if(count($dane) == 2)
{
$sim = $dane[1];
}
else $sim = '';
//$i++;
foreach($porownanie as $comp_item)
{
$comp_dane = explode("|", $comp_item);
/*if(ereg("^[0-9]{6,16}$", $comp_dane[0]) OR ereg("^[0-9]{6,16}$", $comp_dane[1]))
{
$comp_imei = trim($comp_dane[0]);
$comp_sim = '';
}
elseif(ereg("^[0-9]+$", $comp_dane[1]) OR ereg("^[0-9]+$", $comp_dane[0]))
{
$comp_sim = trim($comp_dane[1]);
$comp_imei = '';
}*/
if((int) $comp_dane[0] > 1)
{
$comp_dane[0] = (int) $comp_dane[0];
}
elseif((int) $comp_dane[1] > 1)
{
$comp_dane[1] = (int) $comp_dane[1];
}

if((is_int($comp_dane[0]) AND strlen($comp_dane[0]) < 17) OR (is_int($comp_dane[1]) AND strlen($comp_dane[1]) < 17))
{
$comp_imei = trim($comp_dane[0]);
$comp_sim = '';
}
elseif((is_int($comp_dane[0]) AND strlen($comp_dane[0]) > 17) OR (is_int($comp_dane[1]) AND strlen($comp_dane[1]) > 17))
{
$comp_sim = trim($comp_dane[1]);
$comp_imei = '';
}
else echo("<br>BLAD! " . strlen($comp_sim) ."<br>");
if($comp_imei == $imei)
{
$i++;
//echo('Mamy trafienie!<br>');
//echo("IMEI: $imei SIM: $sim LINIJKA: $comp_item <br>");

}
}
}
}
else
{
$n_zestawu = $main_item;
unset($nowa_partia);
}

if(is_int($n / 100))
{
echo("*");
flush();
}
}
$time_end = getmicrotime(); // obliczenie roznicy czasu
$time = round($time_end - $time_start, 4); //zaokraglenie
echo '<br>Skrypt wykonany w czasie: '.$time.' sekundy</p>';
echo("</pre><br>$i");
?>[/php:1:3bff2b36d8]

A jego wynik jest taki:

Kod
Trwa liczenie danych... to moze portrwac do 5 minut



0%       50%      100%

**********************

Skrypt wykonany w czasie: 92.3461 sekundy





2


Jak moge przyspieszyć? Jakieś pomysły? Próbowałem regexpów - strasznie wolne (dwa razy).[/code]
Go to the top of the page
+Quote Post
kurtz
post 7.08.2003, 12:12:22
Post #2





Grupa: Przyjaciele php.pl
Postów: 786
Pomógł: 0
Dołączył: 18.03.2002
Skąd: Wroclaw/Warszawa

Ostrzeżenie: (0%)
-----


Hej
Cytat
Mam oto taki skrypt:

[php:1:bbcb711f21]<?php
...
?>[/php:1:bbcb711f21]

Jak moge przyspieszyć? Jakieś pomysły? Próbowałem regexpów - strasznie wolne (dwa razy).

Kolejno
1) zmienic ereg na preg_match - sa szybsze. zapewniam
2) zamiast foreach for
3) zamiast pobierac caly plik fgets'uj po linijce i wtedy dopiero analizuj.

4!) skrypt ktory dostarczyles jest niekompletny - brak plikow .txt (wiec jak sprawdzac czy pomoglo..) oraz brak komentarzy wiec wogole nie wiadomo co skrypt ma robic.


Pozdrawiam


--------------------
.. make web your home ..
Go to the top of the page
+Quote Post
cahe
post 7.08.2003, 14:07:32
Post #3





Grupa: Zarejestrowani
Postów: 223
Pomógł: 0
Dołączył: 22.03.2003

Ostrzeżenie: (0%)
-----


Dobrze. Wzbogaciłem skrypt o komentarze i dodałem potrzebne pliki. Można to ściągnąć z: www.telecard.pl/tmp/php.pl.rar

Proszę o w miarę szybką pomoc :-). Ew. też o zgłaszanie błędów (wszystkich chętnych oczywiście, jak ktoś nie chce pomóc to niech nie mówi "eeeee... czego ty wymagasz" tylko siedzi cicho :-)).
Go to the top of the page
+Quote Post
DeyV
post 7.08.2003, 15:59:52
Post #4





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




A ja proszę tylko o to, by nie dawać mi paczek z rarem...
Czy tak ciężko na końcu skryptu dodać [manual:e5dc9cfd41]highlight_file()[/manual:e5dc9cfd41]?


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
scanner
post 7.08.2003, 16:05:21
Post #5





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




albo chociaż [manual:0a0a65c4a6]show_source()[/manual:0a0a65c4a6]


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
DeyV
post 7.08.2003, 16:07:40
Post #6





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




8) dobre, dobre laugh.gif
Cytat
show_source
show_source -- Alias of highlight_file()
Description
This function is an alias of highlight_file().


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
cahe
post 7.08.2003, 16:09:44
Post #7





Grupa: Zarejestrowani
Postów: 223
Pomógł: 0
Dołączył: 22.03.2003

Ostrzeżenie: (0%)
-----


Cytat
A ja proszę tylko o to, by nie dawać mi paczek z rarem...
Czy tak ciężko na końcu skryptu dodać [manual:334737d510]highlight_file()[/manual:334737d510]?


Może i nie ciężko, ale mój komputer nie chodzi 24h na dobe ;-). Pozatym skrypt nie wymaga bazy/ustawiania czegokolwiek. Można spokojnie testować lokalnie. (unikanie błędów, optymalizacja), ale skoro się upierasz (może masz racje - nie wiem :-)) to prosze: http://212.160.55.72/

Zresztą gdyby każdy sobie testował na moim komputerze, zajeło by to wieczność, bo skrypt wykonuje się niezwykle długo (2 minuty, czasem więcej).

//Update: po krótkim namyśle wpadłem na fajny pomysł :-). Highlightowany pliczek jest tu: http://212.160.55.72/index_hl.php
Go to the top of the page
+Quote Post
treewood
post 26.04.2004, 22:42:49
Post #8





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 18.01.2003

Ostrzeżenie: (0%)
-----


Kurtz << no ja bym nie byl taki pewny czy ten preg_match jest szybszy w stosunku do ereg ... w przypadku wyrazen regularnych tak ... ale w przypadku gdy szukamy np "ala" w stringu "ala ma kota" ... to z moich testow wynika, ze ereg wygrywa

z reszta radze samemu potestowac ...


--------------------
Działam w OpenSolution.org, autor Quick.Cms i Quick.Cart już od ponad 10 lat
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 12.07.2025 - 22:05