OSDN Git Service

タグを打ち忘れていたついでに、html版ドキュメントを追加しました。
[ring-lang-081/ring.git] / docs / build / html / _sources / performancetips.txt
diff --git a/docs/build/html/_sources/performancetips.txt b/docs/build/html/_sources/performancetips.txt
new file mode 100644 (file)
index 0000000..2e20d44
--- /dev/null
@@ -0,0 +1,186 @@
+.. index:: 
+     single: 性能改善に関する情報; はじめに
+
+====================
+性能改善に関する情報
+====================
+
+Ring の性能改善方法を学びます。
+
+
+.. index:: 
+     pair: 性能改善に関する情報; リストの作成
+
+リストの作成
+============
+
+用例:
+
+.. code-block:: ring
+
+       ? "Create the list using the Range operator"
+       t1 = clock()
+       aList = 1:1000000
+       ? "Time : " + ((clock()-t1)/clockspersecond()) + " seconds"
+
+       ? "Create the list using the For loop"
+       t1 = clock()
+       aList = []
+       for x = 1 to 1000000
+               aList + x
+       next
+       ? "Time : " + ((clock()-t1)/clockspersecond()) + " seconds"
+
+       ? "Create the list using the list() function and the For loop"
+       t1 = clock()
+       aList = list(1000000)
+       for x = 1 to 1000000
+               aList[x] = x
+       next
+       ? "Time : " + ((clock()-t1)/clockspersecond()) + " seconds"
+
+実行結果:
+
+.. code-block:: none
+
+       Create the list using the Range operator
+       Time : 0.48 seconds
+       Create the list using the For loop
+       Time : 0.79 seconds
+       Create the list using the list() function and the For loop
+       Time : 1.56 seconds
+
+.. note:: リストの作成で for ループ、または list() 関数を使用するよりも、範囲演算子のほうが速いです。
+
+.. note:: リストの追加で add() 関数を使用するよりも、連結演算子‘+’を使用したほうが関数呼び出しのオーバーヘッドが少ないため速いです。ただしソースコードの可読性は落ちる場合があります。
+
+.. note:: 処理に時間が掛かり過ぎるため copy() 関数で数十万件を超える大量のテストデータを作成しないでください。
+
+.. index:: 
+     pair: 性能改善に関する情報; 算術演算子
+
+算術演算子
+==========
+
+用例:
+
+.. code-block:: ring
+
+       ? "Using * operator"
+       t1 = clock()
+       for x = 1 to 1000000
+               out = x * 2
+       next
+       ? "Time : " + ((clock()-t1)/clockspersecond()) + " seconds"
+
+       ? "Using *= operator"
+       t1 = clock()
+       for x = 1 to 1000000
+               out = x
+               out *= 2
+       next
+       ? "Time : " + ((clock()-t1)/clockspersecond()) + " seconds"
+
+実行結果:
+
+.. code-block:: none
+
+       Using * operator
+       Time : 1.34 seconds
+       Using *= operator
+       Time : 0.47 seconds
+
+.. note:: \* 演算子よりも \*= 演算子を使用したほうが速いです。
+
+
+.. index:: 
+     pair: 性能改善に関する情報; len() と For ループの使用
+
+len() と For ループの使用
+=========================
+
+用例:
+
+.. code-block:: ring
+
+       aList = 1:1000000
+
+       ? "Using len() in the For loop"
+       t1 = clock()
+       for x = 1 to len(aList)
+       next
+       ? "Time : " + ((clock()-t1)/clockspersecond()) + " seconds"
+
+       ? "Using len() before the For loop"
+       t1 = clock()
+       nMax = len(aList)
+       for x = 1 to nMax
+       next
+       ? "Time : " + ((clock()-t1)/clockspersecond()) + " seconds"
+
+実行結果:
+
+.. code-block:: none
+
+       Using len() in the For loop
+       Time : 5.50 seconds
+       Using len() before the For loop
+       Time : 0.24 seconds
+
+.. note:: Len() 関数は For ループ内ではなく For ループの手前で使用したほうが早いです。
+
+.. index:: 
+     pair: 性能改善に関する情報; 関数とメソッドの呼び出し
+
+関数とメソッドの呼び出し
+========================
+
+用例:
+
+.. code-block:: ring
+
+       ? "calling 100000 functions"
+       t1 = clock()
+       for x = 1 to 100000
+               test()
+       next
+       ? "Time : " + ((clock()-t1)/clockspersecond()) + " seconds"
+
+       o1 = new test
+
+       ? "calling 100000 methods using the dot operator"
+       t1 = clock()
+       for x = 1 to 100000
+               o1.test()
+       next
+       ? "Time : " + ((clock()-t1)/clockspersecond()) + " seconds"
+
+       ? "calling 100000 methods using braces "
+       t1 = clock()
+       for x = 1 to 100000
+               o1 { test() }
+       next
+       ? "Time : " + ((clock()-t1)/clockspersecond()) + " seconds"
+
+
+       func test
+
+       class test
+               func test
+
+
+実行結果:
+
+.. code-block:: none
+
+       calling 100000 functions
+       Time : 0.28 seconds
+       calling 100000 methods using the dot operator
+       Time : 0.36 seconds
+       calling 100000 methods using braces
+       Time : 1.19 seconds
+
+.. note:: メソッドの呼び出しよりも、関数の呼び出しのほうが僅かに速いです。
+
+.. note:: メソッドの呼び出しで弓括弧を使用するよりも、ドット演算子を使用したほうが速いです。
+