في مناقشة مع اﻷخ فادي حول موضوع (هل يمكن ل Go أو Rust أن تتفوق على ++C في المستقبل )

http://tiny.cc/w6t64y

اقترحنا أن نقوم بتجربة عملية لمقارنة سرعات لغات البرمجة، بحيث نبدأ بمثال بسيط ثم نقوم بالتعقيد لبرامج أكثر تقدماً.

البرنامج اﻷول هو لحساب هل الرقم أولي أما لا.

قمت بكتابة كود بالجافا ولغة Go فكانت النتيجة أن السرعة تقريباً واحدة، في معالج Core i3-5005U

هذه نتيجة برنامج جافا:

 6673214311 Is prime
Operation took 56 seconds

وهذه نتيجة لغة Go:

    6673214311 is Prime
    Execution took:  52 seconds

نجد أن لغة Go أسرع فقط بأربع ثواني.

هذا كود الجافا:

public static void main(String[] args) {

    Date starttime = new Date();
    long number = 6673214311L;
    System.out.print(number + " Is ");

    if (isPrime(number)){
        System.out.println("prime");
    } else {
        System.out.println("not prime");
    }
    Date endtime = new Date();
    long elapsed = (endtime.getTime() - starttime.getTime());
    System.out.println("Operation took " + (elapsed/ 1000) + " seconds");
}

public static boolean isPrime(long number) {

    boolean prime = true;
    for(long i = 2; i <= number/2; ++i)
    {
        // condition for nonprime number
        if(number % i == 0)  {
            prime = false;
            break;
        }
    }

    return prime;

}

  وهذا كود لغة Go:

package main

import ("time")

func main() {
   starttime := time.Now()
   var number int64
   number = 6673214311
   print(number, " is ")
   if isPrime(number) {
      println("Prime")
   } else {
     println("not prime")
   }
   elapsed := time.Since(starttime) / 1000000
   println("Execution took: ", elapsed/1000, "seconds")

 }

func isPrime(number int64) bool {
    var prime = true
    var i int64
    for i = 2; i <= number/2; i++ {
      if number%i == 0 {
         prime = false
         break
       }
     }
     return prime
 }

ويمكن تحميل الكود الناتج من جافا ولغة Go من هذا الرابط:

http://code.sd/share/Prime.zip

وهو يحتوي على ملف تنفيذي بلغة Go لنظم لينكس 64 بت، وآخر لوندوز 64 بت، وثالث جافا 8 لتشغيل برنامج الجافا:

  java -jar JavaPrimeNumber.jar

ننتظر اﻷخ @فادى‍ لكتابة برنامج بلغة C أو ++C