2009-11-07 9 views
12

Chciałbym podać źródła tego, co mówię, ale po prostu ich nie mam, to coś, co słyszałem.Jak działa szybkość ironpythona w porównaniu do innych języków .net?

Kiedyś profesor programowania powiedział mi, że niektóre testy porównawcze oprogramowania wykonane dla .net vs Python w niektórych konkretnych pozycjach dały stosunek 5: 8 na korzyść .NET. To był jego argument na rzecz Pythona, który nie był tak powolny niż .NET

Oto, chciałbym wypróbować IronPython, ponieważ mogłem połączyć framework sieciowy, który znam najbardziej (asp.net) z językiem Najbardziej lubię (Python) i zastanawiałem się nad szybkością programów w asp.net w Pythonie a szybkością programów w ASP.NET z VB.net lub C#. Czy jest na tym jakiś testowanie oprogramowania?

Ponadto, czy prędkości IronPython w porównaniu do innych języków .NET są podobne, skoro IronPython w przeciwieństwie do Pythona musi się skompilować z pośrednim kodem .NET? Czy ktoś może mnie oświecić w tych kwestiach?

Pozdrowienia

+1

Kiedy napisałeś program testowy i go uruchomiłeś, co zauważyłeś? Jakie funkcje .Net chcesz użyć? –

+0

Nie napisałem dla niego programu testów porównawczych.Zastanawiam się, czy istnieje ogólna zauważalna różnica, ale jeśli zależy to zbyt wiele od używanych funkcji, przypuszczam, że nie ma. Piszemy ogólne oprogramowanie administracyjne dla regionalnych firm, które nie mają dużego zapotrzebowania na ruch i nie myślałem o konkretnym projekcie, gdy go zapytałem. Jest (bardzo) prawdopodobne, że nie mam na tym poziomie technicznym, ale widziałem pewne testy porównawcze w Internecie, gdy w większości pozycji Python jest wyświetlany wolniej niż inne języki i zastanawiam się, czy jest taki sam dla Python, niż dla IronPython w związku z .net Thxs za odpowiedź – Pablo

+0

"zależy zbytnio, w których funkcjach używasz" jest zawsze prawdziwe. Ogólne testy porównawcze są bezużyteczne. Jakie szczególne cechy Cię interesują? Co powstrzymuje cię przed napisaniem testu porównawczego między IPythonem i C# dla tych funkcji? –

Odpowiedz

9

Oto dwa ciekawe linki z porównań między IronPython, CPython i C# (między innymi):

  • CPython vs C# (Mono) benchmarks, na podstawie kilku programów wyszczególnionych na stronie .
  • CPython kontra IronPython benchmarks, oparty na PyStone i PyBench, dla wersji 2.6.

Najwyraźniej robi to zgodnie z tym, co powiedział ci twój profesor. Ale jak wiesz, to zależy tak bardzo od tego, z czego korzystasz.

Różnica wynika głównie z dynamicznej natury obiektów używanych w Pythonie, podczas gdy C# jest silnie wpisane. Tak więc IronPython używa jeszcze jednego poziomu (DLR - Dynamic Language Runtime), oprócz tego, z czego uruchamiany jest C# (CLR - Common Language Runtime), aby rozwiązać tę różnicę.

zwykle nienawiść do cytowania artykułów z Wikipedii, ale jest to dobry punkt wyjścia: http://en.wikipedia.org/wiki/Dynamic_Language_Runtime

teraz wrócić do swojego projektu, występy będzie prawdopodobnie bardziej zależne od swoich algorytmy/heurystyki - jak kwerendy na przykład baza danych niż w języku. Jeśli znasz ramy internetowe i jesteś z nich zadowolony, dobrym pomysłem jest pozostać przy tym samym środowisku, a nie uzyskać kilka procent procent od czegoś, co musisz najpierw oswoić. Nie byłoby tak samo, gdyby oczywiście aplikacja wymagała dużej mocy obliczeniowej.

+1

"C# jest silnie wpisane". Masz na myśli "statycznie wpisane"? Lub "mocno wpisane deklaracje zmiennych"? Powiązanie typu Python jest dość silne, ale jego zmienne są dynamiczne. –

+0

Mam na myśli zdecydowanie deklaracje maszynopisane, co oczywiście pozwala kompilatorowi zbliżyć się do ostatecznego wyniku w złożeniach, niż to, co Python może osiągnąć z powodu pisania na klawiaturze. – RedGlyph

+0

Niestety benchmarki CPython vs. IronPython zostały uruchomione albo tylko raportowanie jednej rundy, albo w niektórych przypadkach zdecydowanie tylko * działa * jedna runda, co czyni je bardzo wątpliwymi. –

1

Można włączyć śledzenie .net, które wyświetla informacje o taktowaniu u dołu strony. Stwórz aplikację w C#/.Net i aplikacji korzystającej z Pythona i zobacz różnice w czasie. To da ci ostateczną odpowiedź.

Szczerze mówiąc, myślę, że lepiej Ci się przy użyciu C#, jest to "szybsze" rozwiązanie, ponieważ środowisko VS jest dla ciebie i będzie działało szybciej, ponieważ nie musi używać dynamicznego języka uruchomieniowego .

+0

Wiem, ale to, co przemawia do mnie z Python, to pozwala pisać mniej kodu, poza tym myślę, że nie można tego zrobić w C# bez przepisywania (choć nie do końca pewny) http://www.ironpythonresource.com/post/2008/08/23/IronPython-Dynamically-creating -objects-and-binding-one-to-a-form.aspx – Pablo

+0

Być może w C# 4.0 z nowymi funkcjami? – Pablo

+1

Jako dynamicznie napisany język Python jest generalnie szybszy w rozwoju niż C#. Jeśli używasz IDE, takiego jak Wing, z intellisense itp. Dla Pythona, otrzymasz dużo tego, co Visual Studio ma do zaoferowania dla C#. – fuzzyman

0

IronPython będzie znacznie wolniejszy niż C#. Można by pomyśleć o porównaniu w bardzo gruby sposób między CPython i C, ale z nieco mniejszą luką.

Powiązane problemy