2009-11-04 14 views
5

Obecnie mamy wysoko wydajną aplikację naukową napisaną w języku C++, która korzysta z Intel Math Kernel Library.Wysokowydajna biblioteka matematyczna dla .NET/C# i Java

Rozważamy napisanie aplikacji testowej napisanej w Javie i .NET/C#, aby porównać różnicę wydajności. Aby to zrobić, potrzebujemy również dobrej (komercyjnej) biblioteki matematycznej dla obu. Czy ktoś wie o jakiejkolwiek bibliotece odpowiedników matematycznych dla Java/C#?

Jako sidenote: C++ ma bibliotekę Intel TBB, aby pomóc w wielowątkowości. Czy .NET/C# i Java mają coś podobnego?

+0

myślisz o napisaniu wrappera dla biblioteki C++ dla C# i Java? –

+1

Java ma java.util.concurrent i subpackages. Nie jestem zbyt zaznajomiony z TBB, ale jest to sposób na wykonywanie Threading przez Sun. – KitsuneYMG

+0

@Aaron: tak ... też o tym myślałem. dzięki za komentarz. – sivabudh

Odpowiedz

1

Lol .. dlaczego nie pomyślałem o tym wcześniej?

Po prostu użyj biblioteki Intel MKL Math w Javie i .NET!

Zobacz poniższe linki:

+1

Głównym argumentem jest to, że wynikowy kod C# nie jest już przenośny dla np. mono/linux, ponieważ jest zależny od API/DLL działającego poza CLR. – redcalx

+0

dzięki za dobre myśli. Zadałem pytanie na forum Intel MKL, aby sprawdzić, czy wersja linuksa MKL będzie działała z implementacją Mono, czy nie. Jeśli nie, jaki jest ich plan. Dzięki jeszcze raz. – sivabudh

+0

@ locster: Intel odpowiedział, że Mono nie jest obsługiwany * jeszcze *. Więc człowiek ... bardzo źle. – sivabudh

4

mogę pomóc z C#:

Oto kolejny SO pytanie, które omówiono various C# math libraries

I można przyjrzeć PLINQ dla C# wielowątkowości pomoc.

+0

hej .. dziękuję za ten link. Btw .. jesteś w społeczności naukowej? Jeśli tak, czy używasz C# w pracy? czy masz jakieś doświadczenie z dowolną biblioteką matematyczną C# (high-performance)? – sivabudh

+0

Piszę aplikację do symulacji zdarzeń dyskretnych o nazwie Micro Saint Sharp. Przełączyliśmy się z C na C# 7 lat temu. Wydajność jest świetna. Nie używam zewnętrznych bibliotek matematycznych. Jedyną specjalną klasą matematyczną, której używamy do obliczania różnych rozkładów losowych, jej działanie nigdy nie było wąskim gardłem symulacyjnym. –

+0

Jestem dość zaskoczony wydajność C# jest na równi z C. To świetnie się słyszeć! – sivabudh

1

ALGLIB to wieloplatformowa biblioteka analizy i przetwarzania danych. A to nic nie kosztuje - ALGLIB jest dystrybuowany na licencji GPL (wersja 2 lub nowsza).Zawiera on:

Równania różniczkowe równania

Linear

Matrix i wektorowe operacji, Wartości i wektory własne

Całkowanie numeryczne, interpolacja i montażu, Optymalizacja

FFT, splot, korelacja

Statystyka: ogólne algorytmy, testowanie hipotez

Analiza danych: klasyfikacja, regresja, inne zadania

Funkcje specjalne

0

SuanShu jest duży zbiór algorytmów numerycznych. Jest dobrze obsługiwany. Posiada zarówno wersję Java, jak i DARMOWE wersje C#.