-3

Scala、Java、Cを比較しました。実行したコードと、得られた結果は次のとおりです。

Java(プリミティブデータ型):

    class test {
        public static void main(String args[]) {
            long t1=System.nanoTime();
            for (int i=0; i<1000000000; i++) {

            }
            long t2 = System.nanoTime();

            System.out.println((t2-t1));
        }
    }


出力: 1.2秒である1181601584



C:

    #include <stdio.h>
    #include <time.h>

    int main() {
      clock_t t1=clock();
      for (int i=0; i<1000000000; i++) {

      }
      clock_t t2= clock();

      printf("%u",(t2-t1)/(double)CLOCKS_PER_SEC);

      return 0;
    }


出力: 2.2秒である2233382994



Scala:

    object test {
      def main(args: Array[String]) {
        val nos = 1 to 1000000000
        val t1 = System.nanoTime
        for (i<-nos) {

        }
        val t2 = System.nanoTime

        println(t2-t1)
      }
    }

出力:
12.4秒である12392282270



Java(ボックス化):

    class test {
        public static void main(String args[]) {
            Long t1=System.nanoTime();
            for (Integer i=0; i<1000000000; i++) {

            }
            Long t2 = System.nanoTime();

            System.out.println((t2-t1));
        }
    }

出力:
20.8秒である20756681957

さて、私の質問は、原始的なものが箱入りのカウンターパートよりも速い場合、なぜオブジェクト指向言語を使用することを選択する必要があるのか​​ということです。大きなプロジェクトをオブジェクト指向で作成する方がはるかに簡単であることに同意しますが、効率と速度が私たちが求めていたものである場合(サーバーやスーパーコンピューターの場合と同様に、ホームユーザーにとってはより高速なソフトウェアの方が優れていると思います) 、なぜ世界中の誰もが彼のコードをScalaで書き込もうとするのでしょうか?より深い質問は、なぜこれらの遅い言語がこれまでに登場したのかということです。

4

3 に答える 3

5

言語を選択する主な要因は、常に(そして非常にまれに)パフォーマンスであるとは限りません。これら2つの中からどちらを選択しますか。

  1. 言語Aでは、30日でプログラムを作成できます。すべてのユーザーインタラクションの応答時間は2ミリ秒です
  2. 言語Bでは、2日で同じプログラムを作成できます。ただし、すべてのユーザー操作の応答時間は20ミリ秒です。

エンドユーザーは、応答時間が2ミリ秒か20ミリ秒かを本当に気にかけていると思いますか?それらは非常に小さな時間なので、区別がつきません。しかし、2日間の開発と比較して30日間の開発は膨大です。1日1000ドルで、それはかなりの違いを生みます。

さらに、ベンチマークに欠陥があります。

さらに、intではなくIntegerを使用できるようにするためにOOPを使用しません。OOPを使用して、複数のフィールドとメソッドで構成される複雑なオブジェクトをより直感的な方法で操作できるようにします。

于 2013-03-03T10:56:33.127 に答える
1

有用なベンチマークはほとんどありません。CおよびJavaコンパイラが空のループをすぐに最適化した可能性がありますが、Scalaバージョンのループにはメソッド呼び出しが含まれているため、Scalaではそれほど簡単ではありません。メソッド呼び出しには最初に効果を確認する必要があります。

于 2013-03-03T11:15:46.357 に答える
1

多くの場合、ほとんどの場合、タイトループの速度が問題の中で最も少ないためです。

于 2013-03-03T11:57:52.913 に答える