JVM

2009-10-20 22 views
6

पर चलने वाली सबसे तेज़ भाषा क्या है JVM पर चलने वाली सबसे तेज़ भाषा क्या है?JVM

स्कैला? ग्रूवी? JRuby?

+6

यह है कि क्या आप इसके साथ क्या कर रहे हैं पर निर्भर नहीं करता है? –

उत्तर

12

http://benchmarksgame.alioth.debian.org/ देखें। जावा बहुत तेज़ है, स्केल लगभग तेज़ है। JRuby 10-30 गुना धीमा है। ग्रोवी slow too है।

+0

कितना अजीब! पाठ "http://shootout.alioth.debian.org/" कहता है, लेकिन यह वह जगह नहीं है जहां लिंक आपको ले जाता है ... – igouy

+0

"JRuby 10-30 गुना धीमा है" - मल्टीकोर के बारे में परेशान किए बिना, बेंचमार्क गेम शो सबसे तेज़ 2x धीमी और धीमी 87x धीमी गति से http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=jruby&lang2=scala&box=1 – igouy

+0

@igouy: आखिर में 1 9 महीने बाद मैंने लिंक तय कर दिया। :-( –

1

जावा।

वास्तव में, अधिकांश भाग के लिए गति अंतर नगण्य होगा। स्थिर भाषाएं गतिशील भाषाओं की तुलना में तेज़ी से होंगी, लेकिन ज्यादा नहीं।

+2

जबकि जावा सबसे तेज़ है, यह अक्सर * विशाल * राशि से होता है। Http://shootout.alioth.debian.org/ पर एक नज़र डालें और जेआरबी बनाम जावा की तुलना करें। –

+0

अच्छी तरह से उस पर देखो। आप सही हे। –

-3

कोई भी भाषा जो बाइटकोड को संकलित करती है वह जेआईटी के साथ एक जेवीएम पर समान रूप से तेज़ी से चलती है।

+5

ग्रोवी और रूबी द्वारा प्रतिबिंब का भारी उपयोग उन्हें सादा जावा की तुलना में धीमा कर देता है। लेकिन जेएसआर -2 9 2 (http://jcp.org/en/jsr/detail?id=292) के मुताबिक, जावा 7 के साथ बेहतर होना चाहिए। – vdr

+0

जहां तक ​​मुझे पता है, जेआरबी एक दुभाषिया है, और इसलिए रूबी कोड बाइटकोड में संकलित नहीं है। क्या कुछ अतिरिक्त काम के लिए जेआईटी नहीं है? –

+0

"JRuby को भरना: जेआईटी कंपाइलर" http://www.realjenius.com/2009/10/06/distilling-jruby-the-jit-compiler/ – igouy

1

एंथनी का कहना है कि जावा सबसे तेज़ भाषा है।

स्थैतिक टाइपिंग (जावा, स्कैला) वाली भाषाएं गतिशील लोगों (ग्रोवी, जेआरबी) से तेज हैं।

1

आपको सावधान रहना होगा कि आप क्या तुलना कर रहे हैं। साथ ही साथ "यह निर्भर करता है कि आप इसके साथ क्या कर रहे हैं" कि अन्य ने उल्लेख किया है कि यह पर निर्भर करता है कि आप इसे कैसे करते हैं।

उदाहरण के लिए, स्कैला जैसी भाषा आपको स्वाभाविक रूप से मुहावरे और एल्गोरिदम व्यक्त करने की अनुमति दे सकती है कि आप शायद जावा में करने के लिए एक लंबा रास्ता तय करेंगे। यह कहना नहीं है कि आप एक ही काम करने में स्कैला के प्रदर्शन से मेल नहीं खा सकते थे - बस यह एक भाषा में एक दूसरे में प्राकृतिक मुहावरे से मेल खाने के लिए एक बदसूरत कामकाज बन सकता है (ध्यान दें कि मैं नहीं कह रहा हूं कि मेरा मानना ​​है कि स्कैला वास्तव में तेज़ है विशेष रूप से जावा पर जावा - मेरे पास उस पर कोई डेटा नहीं है - इसके अलावा स्कैला को स्केलेबिलिटी के साथ दिमाग में डिज़ाइन किया गया है - इसलिए नाम)।

दूसरे शब्दों में, प्रदर्शन आमतौर पर एल्गोरिदम के बारे में होता है और अक्सर एल्गोरिदम की पसंद अभिव्यक्ति की आसानी के बारे में होती है। तो "नौकरी के लिए सही उपकरण का उपयोग करें" यहां लागू होता है - चाहे वह उपकरण जावा, स्कैला, जेआरबी या जो कुछ भी हो (हालांकि मुझे संदेह है कि ऐसी कोई परिस्थितियां हैं जहां एक गतिशील भाषा पैथोलॉजिकल के बिना एक स्थिर से तेज है)।

बेशक हम अनुकूलित करने से पहले प्रोफाइलिंग के बारे में भी बात कर सकते हैं, लेकिन यह सीधे सवाल को संबोधित नहीं करता है।

+0

"स्कैला को स्केलेबिलिटी के साथ दिमाग में डिजाइन किया गया है - इसलिए नाम" मुझे नहीं लगता कि इसका मतलब स्केलेबल द्वारा किया गया था, उनका मतलब था "अवधारणाएं बड़े पैमाने पर अच्छी तरह से स्केल करती हैं कार्यक्रम "http://www.scala-lang.org/node/250 – igouy

+0

मुझे लगता है कि यह एक अधिभारित शब्द है, लेकिन निश्चित रूप से समांतर प्रसंस्करण के लिए एक संकेत था। समवर्ती अनुप्रयोगों को लिखना आसान बनाकर वे बेहतर पैमाने पर स्केल कर सकते हैं - और यह कुल प्रदर्शन में सुधार हो सकता है, भले ही, प्रति निर्देश, वे समान या धीमे हैं। बेशक यह सभी प्रकार की समस्याओं के लिए उपयोगी नहीं है। – philsquared

+0

"समानांतर प्रसंस्करण के लिए निश्चित रूप से एक संकेत था" - आपके दिमाग में लेकिन वे कहां लिंक करते हैं उस नाम के लिए? – igouy

-1

मुझे लगता है कि यह आपके द्वारा तेज़ी से क्या मतलब है, और प्रदर्शन के लिए भाषा कितनी अच्छी तरह से लिखा जाता है, इस पर निर्भर करेगा।

उदाहरण के लिए, यदि आप कुछ गणित गहन कर रहे हैं तो स्कैला जावा से तेज़ होगा।

लेकिन, यदि आप जावा में धीमे कार्यों से बचते हैं और जहां यह समझ में आता है, तो अंतिम रूप से उपयोग करने के लिए, आप जावा को साला से तेज़ी से चलाने के लिए प्राप्त कर सकते हैं, जो हाल ही में मुझे एक साक्षात्कार में बताया गया था।

तो, सामान्यताओं में जवाब देने के लिए यह एक कठिन सवाल है, क्योंकि लोग ऐसे उदाहरण दिखाएंगे जहां स्कैला या जावा तेज होगा।

लेकिन, मुझे विश्वास है कि यदि आप var एस का उपयोग नहीं कर रहे हैं, लेकिन val इसके बजाय स्कैला आमतौर पर तेज़ होगा।

+0

"उदाहरण के लिए, यदि आप कुछ गणित गहन कर रहे हैं तो स्कैला जावा से तेज़ होगा" - क्या आप यह दिखा सकते हैं कि यह सच है? – igouy

+0

मैं कर सकता था, लेकिन यह थोड़ी देर के लिए होगा, लेकिन स्कैला के डिजाइन के कारण, यदि आपको ऐसी समस्या है जो समांतर में करना आसान है, जैसे कि फिनिट एलिमेंट मैथ, तो कार्यात्मक प्रोग्रामिंग का लाभ लेने के कारण स्कैला तेजी से होगा पहलुओं, लेकिन, जैसा कि मैंने उल्लेख किया है, आप या तो दिखाने के लिए तर्क के साथ आ सकते हैं, यह समस्या पर निर्भर करता है और प्रत्येक भाषा कितनी अच्छी तरह लिखी गई थी। –

+0

"यदि आपको कोई समस्या है जो समांतर में करना आसान है" - जैसे वर्णक्रमीय-मानक? http://shootout.alioth.debian.org/u32q/benchmark.php?test=spectralnorm&lang=scala&id=2 – igouy