Wczytanie dużej listy adresów do komponentu TListView
Napisane: niedziela, 6 lutego 2011, 15:17
Witam ponownie,
tym razem z zapytaniem o możliwość polepszenia wydajności wczytania danych do TListView.
Dane do ListView wczytuję w wątku następującym kodem:
i wczytanie większych ilości dnach np 214542 adresów z pliku zajmuje bardzo dużo czasu 45 długich minut dla Release_Build
Pytanie brzmi czy idzie to przyspieszyć ?
----
Przy okazji... po kompilacji zwracana jest taka uwaga:
[C++ Warning] WatekWczytajZpliku.cpp(57): W8004 'Lista' is assigned a value that is never used
Której nie rozumiem przecież Lista jest używana w kodzie
tym razem z zapytaniem o możliwość polepszenia wydajności wczytania danych do TListView.
Dane do ListView wczytuję w wątku następującym kodem:
KOD cpp: UKRYJ
void __fastcall WczytajZpliku::Execute()
{
float Start = GetTickCount();
Button->Enabled = false;
TStringList * Lista = new TStringList();
Lista->LoadFromFile(nazwaPliku);
int jj = 1;
for(int ii = 0; ii < Lista->Count; ii++)
{
String adres = Lista->Strings[ii].Trim();
if(adres.IsEmpty()== false)
{
TListItem * ElementListy=ListView1->Items->Add();
ElementListy->Caption = adres;
ElementListy->SubItems->Add("---");
ElementListy->SubItems->Add("---");
++jj;
if((jj%100) == 0)
{
StatusBar1->Panels->Items[0]->Text="Lista zawiera "+IntToStr(jj)+" adresów";
}
}
}
float End = GetTickCount();
String sWCzasie = FloatToStr((End - Start) / 1000) + " s.";
Button->Enabled = true;;
delete Lista; Lista = NULL;
int iDodanych = ListView1->Items->Count;
StatusBar1->Panels->Items[0]->Text="Lista zawiera "+IntToStr(iDodanych)+" adresów. Czas wczytania: "+sWCzasie;
StatusBar1->Panels->Items[1]->Text="---";
}
{
float Start = GetTickCount();
Button->Enabled = false;
TStringList * Lista = new TStringList();
Lista->LoadFromFile(nazwaPliku);
int jj = 1;
for(int ii = 0; ii < Lista->Count; ii++)
{
String adres = Lista->Strings[ii].Trim();
if(adres.IsEmpty()== false)
{
TListItem * ElementListy=ListView1->Items->Add();
ElementListy->Caption = adres;
ElementListy->SubItems->Add("---");
ElementListy->SubItems->Add("---");
++jj;
if((jj%100) == 0)
{
StatusBar1->Panels->Items[0]->Text="Lista zawiera "+IntToStr(jj)+" adresów";
}
}
}
float End = GetTickCount();
String sWCzasie = FloatToStr((End - Start) / 1000) + " s.";
Button->Enabled = true;;
delete Lista; Lista = NULL;
int iDodanych = ListView1->Items->Count;
StatusBar1->Panels->Items[0]->Text="Lista zawiera "+IntToStr(iDodanych)+" adresów. Czas wczytania: "+sWCzasie;
StatusBar1->Panels->Items[1]->Text="---";
}
Pytanie brzmi czy idzie to przyspieszyć ?
----
Przy okazji... po kompilacji zwracana jest taka uwaga:
[C++ Warning] WatekWczytajZpliku.cpp(57): W8004 'Lista' is assigned a value that is never used
Której nie rozumiem przecież Lista jest używana w kodzie