Saturday, June 19, 2010

ඇයි Java Slow ?

සාමාන්‍යයෙන් කට්ටිය කියන දෙයක් තමයි ජාවා ටිකක් slow කියන එක. මම හිරු පිලිගත් ජාවා පොරක් වෙන්න ජාවා ඉගෙන ගත්ත රජිත සර් දවසක් කිව්වා "Java is a bullock cart against C or C++". එයා කියන විදිහට දැනට තියෙන programing languages අතරින් C වේගවත්ම programing language එකක් විදිහට සලකන්න පුලුවන් කියන එක. ඉතින් ඇයි ජාවා slow ? ඇත්තටම ජාවා slow ද? මටත් ඔය වගේ ප්‍රශ්ණ ගොඩක් ආවා. ඉතින් ටිකක් හොයල බලපුහාම කතාව ඇත්ත. ජාවා, C එක්ක බලනකොට slow තමයි. ඇයි? ඒකට හේතු ගොඩක් තියෙනවා.
ජාවා වලින් ලියපු program එකක් පාවිච්චි කරපු කෙනෙක්ට හරි ජවා වලින් programing කරපු කෙනෙක්ට හරි ලේසියෙන් තේරුම් යන දෙයක් තමයි ජාවා slow කියන එක. හැබැයි ජාවා විතරක් දන්න කෙනෙක් කියයි වෙන දෙයක්.
හැබැයි ජාවා C හා සමානව speed එකක් ගන්න එක විශේෂිත අවස්තාවක් තියෙනවා. ඒ තමයි ඔක්කොම compilations එකම class එකක විතරක් තියෙන සහ පාවිච්චි කරල තියෙන ඔක්කොම data types ටික primitive data types වෙනවනම්. එ කියන්නෙ int වගේ data types.
ඒ කියන්නේ අපි ලියන ජාවා program එකේ objects පාවිච්ච් කරන්න ගත්ත ගමන් අපි ලියන program එක slow වෙනවා කියන එක. අපි බලමු ඒ ඇයි කියලා?
  • හැම object එකක් වෙනුවෙන්ම ඉඩ heap එකේ වෙන් කිරීම. ජාවා වල int වගේ primitive data types සහ object references වලට ඉඩ වෙන් කරන්නේ stack එකේ. හැම object එකක් සදහාම ඉඩ වෙන් කරන්නේ heap එකේ. C++ වගේ languages වල විශාල objects වලට heap එකේ ඉඩ වෙන් කලත් ජාවා වල ලොකු කුඩා හැම object එකක්ම හැදෙන්නේ heap එකේ.
  • casts ගොඩක් පාවිච්චි වීම.
  • ජාවා වල තියෙන garbage collector එකට memory use වීම.
  • ජාවා වල objects විශාල වීම.
මේ වගේ හේතු ගණනාවක්ම තියෙනවා ජාවා ටිකක් slow වෙන්න. Java අනිත් programing languages වලින් හොද වෙන්න හේතු වෙන post එකක ලියන්නම්.

4 comments:

  1. There is also the Java Thread scheduler issue. When it comes to Windows and Linux-like Operating Systems, only one thread is picked-up by the native thread scheduler to be run. This decreases Java's performance immensely.

    ReplyDelete
  2. Thanks Akila, I Hope to write why java is good next time.

    ReplyDelete