2010-09-09 20 views
9

Czy istnieje coś takiego, jak optymalny rozmiar porcji do przetwarzania dużych plików? Mam usługę przesyłania (WCF), która służy do akceptowania przesyłania plików w zakresie od kilkuset megabajtów.Jak obliczyć optymalny rozmiar porcji do przesłania dużych plików?

Eksperymentowałem z rozmiarami 4KB, 8KB do 1MB porcji. Większe rozmiary porcji są dobre dla wydajności (szybsze przetwarzanie), ale kosztem pamięci.

Czy istnieje sposób na określenie optymalnego rozmiaru porcji w momencie przesyłania plików. W jaki sposób można wykonać takie obliczenia? Czy byłoby to połączenie dostępnej pamięci z klientem, procesorem i przepustowością sieci, która określa optymalny rozmiar?

Cheers

EDIT: Prawdopodobnie należy wspomnieć, że aplikacja klienta będzie w Silverlight.

Odpowiedz

6

Jeśli obawiasz się wyczerpania zasobów, to optymalnie najlepiej jest określić, oceniając współbieżność ładowania podglądu z dostępną pamięcią systemu. Ile jednoczesnych operacji przesyłania w danym momencie będzie kluczową zmienną w obliczeniach, jakie możesz wykonać. Wszystko, co musisz zrobić, to upewnić się, że masz wystarczająco dużo pamięci, aby obsłużyć współbieżność przesyłania, a to dość banalne. Pamięć jest tania i najprawdopodobniej zabraknie przepustowości sieci na długo przed osiągnięciem punktu, w którym twoja współbieżność przekroczyłaby twoją dostępność pamięci.

Po stronie wydajności nie jest to coś, co można naprawdę zoptymalizować podczas projektowania i tworzenia aplikacji. Musisz mieć zainstalowany system, użytkownicy przesyłają pliki na prawdziwe, a następnie możesz monitorować rzeczywistą wydajność środowiska wykonawczego.

Spróbuj wielkości porcji odpowiadającej rozmiarowi okna sieci TCP/IP. To mniej więcej tak optymalne, jak byś naprawdę potrzebował czasu projektowania.

+1

cóż, bardziej odnosiłem się do komputerów klienckich (na które nie mamy żadnej kontroli). Jeśli ustawię rozmiar porcji na 1MB, to zajmie całą pamięć komputera klienta. Ale jeśli ustawię ją na niską, przetwarzanie zajmie dużo czasu. – Fixer

+3

Oh! na komputerze klienta jest o wiele prostsze. Współbieżność prawie nie istnieje. Tak długo jak nie przechowujesz bitów w pamięci po ich zdobyciu, możesz w zasadzie użyć dowolnego rozmiaru fragmentu, jaki chcesz. Każdy współczesny klient, nawet telefon, ma wystarczającą ilość procesora i pamięci, aby poradzić sobie z kilkoma plikami, dopóki przesyłają one bity do pamięci po otrzymaniu każdego fragmentu. Wątpię, by zauważyłeś jakąkolwiek istotną różnicę w wydajności na poziomie aplikacji w oparciu o rozmiar tylko porcji. Pobiegłbym z 1024 KB dla dużych plików i nazwałbym to dniem. –

Powiązane problemy