konto usunięte

Temat: Duże łańcuchy tekstowe - obsługa

Tak właśnie piszę szyfrator plików tekstowych i zastanawiam się -
mam duże łancuchy znakowe - po 300 000 pozycji, 250 000 pozycji.
Obsługa ich w sposób tradycyjny - po string'u jest dość powolna.
Może macie jakiś pomysł na skuteczniejsze użycie? (konieczna jest obsługa rozszerzonej tablicy ASCII)

Przy okazji:
przy dużych łancuchach i ich zapisie do pliku WYRAŹNA jest różnica prędkości zapisu StreamWritera i System.IO.File.WriteAllText(), na korzyść StreamWriter :) moze komus taka informacja sie przyda :)
Kazimierz Kuta

Kazimierz Kuta Microsoft MVP

Temat: Duże łańcuchy tekstowe - obsługa

sprawdź co jest przyczyną. najlepiej jakimś profilerem (ANTS ma demo ;P http://www.red-gate.com/products/ants_profiler/ ).
Stanisław P.

Stanisław P. Software designer

Temat: Duże łańcuchy tekstowe - obsługa

Trochę mi tu idea nie pasuje... szyfrator plików tekstowych? gdzie tu są stringi?

Interfejsy crypto z tego co pamiętam operują na Byte[] w .net, albo bezpośrednio przez CryptoStream... Skuteczniejsze użycie to pewnie czytanie blokami Byte[n*1024], z n=4 / 8 / coś tego typu, potem kodowanie bloku, zapis. Jeszcze szybciej - crypto w innym wątku niż i/o i użycie zestawu buforów.
Albo zupełnie tak jak msdn proponuje: http://msdn2.microsoft.com/en-us/library/system.securi...

I nigdzie nie powinieneś tworzyć nigdy stringa z tym tekstem... niepotrzebna strata czasu jeśli szyfrujesz tylko plik.

Chyba, że chodzi Ci o własną implementację kodowania, a nie interfejsy z .NET... to wtedy proponuję albo cały czas na nieweryfikowanym kodzie i Byte[] pracować, albo napisać samo szyfrowanie w C/C++ w jakiejś bibliotece zewnętrznej i zrobić P/Invoke -> będzie szybko.

konto usunięte

Temat: Duże łańcuchy tekstowe - obsługa

Soft działa w trybie tekst/plik. To prosta aplikacja na wewnętrzne potrzeby. Testuję właśnie rozwiązanie na Byte. Jest jak na razie sporo szybsze.

Przy okazji: nie jest to żadne typowe szyfrowanie, a zasadniczo realizacja projektu historycznego. Kluczem jest dowolny ciąg tekstu, zawierający dowolne znaki alfanumeryczne. Jako klucz szyfru służyć może np. tekst książki itp. :) im więcej tym lepiej :)

Zostałem przy użyciu Byte. Dla dużych plików / bloków tekstowych oszczędności sięgają 3-4 sekund.Piotr Jędrkowiak edytował(a) ten post dnia 03.01.08 o godzinie 18:00



Wyślij zaproszenie do