polymorphism napisał(a):Oczywiście zamiast wstringa można spróbować użyć UnicodeStringa, sam jestem ciekaw, jakie będą różnice w czasach.
dla pliku 7mb, proc c2d 2,4ghz, wyszło mi:
std::wstring - 875ms z
wstring.reserve(iBytesRead);UnicodeString dla
wstr += wc; - 1687ms
UnicodeString dla
wstr.SetLength(iBytesRead); dalej
wstr[i+1] = wc; zamiast
wstr += wc; - 670ms
Cyfrowy Baron napisał(a):Nie chce mi się już tego w kółko wałkować.
Zrobiłem następny test:po zastąpieniu znaków 0, 10, 13 przez spacje dla pliku który zawierał znaki o kodach 0-255 zawartość w Memo1 (przepisanie przez Text) i Memo2 (przepisanie przez Lines->SetText) była identyczna. Metoda "Text" nie gubi znaków, nie wiem czemu tak napisałeś.
Cyfrowy Baron napisał(a):Nie to jest problemem lecz, że Memo oczekuje wartości typu wchar_t dla SetText i UnicodeString dla Text. Przepisywanie zawartości pliku do Memo trwa w przypadku 2MB około 1 min i to jest głównym problemem.
test1, 7mb plik mp3, ustawienia Memo1->WordWrap na
false, ScrollBars =
ssBoth ,metoda "Text", czas wykonywania ~2.4s, proc c2d 2,4ghz.
test2, 7mb plik mp3, ustawienia Memo1->WordWrap na
true, ScrollBars =
ssNone ,metoda "Text", czas wykonywania ~48s, proc c2d 2,4ghz.