![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 012 Pomógł: 109 Dołączył: 26.09.2003 Skąd: nexis.pl Ostrzeżenie: (0%) ![]() ![]() |
Poniższy program importuje cennik zapisany w formacie XML i ważący obecnie 27 510 582 bajtów (ok. 26 MB) do bazy danych MySQL:
Dodam, że funkcja utf2iso musi istnieć, ponieważ iconv" title="Zobacz w manualu PHP" target="_manual sobie nie radził z niektórymi znakami. Dodatkowo nie wiedząc czemu, rekordy wstawiały się dwukrotnie - stąd użycie odpowiednich kluczy w bazie danych i zapytania typu REPLACE. Czy w powyższym kodzie można coś poprawić co ewentualnie zwiększyłoby jego wydajność (skróciło czas wykonania)? Obecnie wynosi on ok. 180 sekund! Ten post edytował nexis 17.11.2007, 00:56:45 -------------------- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 461 Pomógł: 32 Dołączył: 17.09.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Myślę, że użycie SAX'a sprawiłoby, że kod wykonywałby się szybciej. Ale to zejdzie Ci trochę na przepisanie pod SAX'a ... więc musisz sam policzyć czy ewentualny zysk jest tego wart czy też nie ...
Do tego proponowałbym inaczej napisać funkcję utf2iso. A także pomyśleć nad użyciem prepared statements - jeśli masz je dostępne a jeśli nie to generować zapytania na bieżąco w callbackach sax'a. I przede wszystkim przemyśl jeszcze raz użyty algorytm (skoro mówisz, że dublowały się wpisy to znaczy, że masz algorytm źle skonstruowany) - spróbuj zapisać go tak by duble nie miały prawa się pojawić. Jeszcze na początek proponuję dołożenie kodu profilującego na bazie microtime by sprawdzić co najwięcej czasu zabiera - czy xml, czy baza czy php. I starać się przede wszystkim to zoptymalizować. Ten post edytował Kocurro 17.11.2007, 03:09:29 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 600 Pomógł: 2 Dołączył: 1.09.2002 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
tak... popatrz dlaczego dodaje sie dwukrotnie... byc może zaoszczędzisz na tym nawet 30-40% czasu.. pozdr...
P.S. to nie jest przypadkiem cennik actiona ![]() ![]() Ten post edytował kukix 15.02.2008, 19:47:01 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 18:31 |