OSDN Git Service

...。
[ring-lang-081/ring.git] / docs / ja-jp / build / html / performancetips.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
4
5 <html xmlns="http://www.w3.org/1999/xhtml">
6   <head>
7     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8     
9     <title>性能改善に関する情報 &mdash; プログラミング言語 Ring 1.12 取扱説明書</title>
10     
11     <link rel="stylesheet" href="_static/bootstrap-astropy.css" type="text/css" />
12     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
13     
14     <script type="text/javascript">
15       var DOCUMENTATION_OPTIONS = {
16         URL_ROOT:    './',
17         VERSION:     '1.12',
18         COLLAPSE_INDEX: false,
19         FILE_SUFFIX: '.html',
20         HAS_SOURCE:  true
21       };
22     </script>
23     <script type="text/javascript" src="_static/jquery.js"></script>
24     <script type="text/javascript" src="_static/underscore.js"></script>
25     <script type="text/javascript" src="_static/doctools.js"></script>
26     <script type="text/javascript" src="_static/translations.js"></script>
27     <link rel="top" title="プログラミング言語 Ring 1.12 取扱説明書" href="index.html" />
28     <link rel="next" title="Ring アプリケーションの配布方法" href="distribute.html" />
29     <link rel="prev" title="コマンドラインオプション" href="compiler.html" />
30     <link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,600' rel='stylesheet' type='text/css'/>
31
32   </head>
33   <body role="document">
34 <div class="topbar">
35   <a class="brand" title="Documentation Home" href="index.html"><span id="logotext1">&#x1f369;Ring</span><span id="logotext2"> 1.12</span><span id="logotext3">:docs</span></a>
36   <ul>
37     
38     <li><a href="http://ring-lang.sourceforge.net/news.html">News</a></li>
39     <li><a href="http://ring-lang.sourceforge.net/download.html">Download</a></li>
40     <li><a href="https://groups.google.com/forum/#!forum/ring-lang">Get Help</a></li>
41     <li><a href="https://github.com/ring-lang/ring">Contribute</a></li>
42     <li><a href="http://ring-lang.sourceforge.net/resources.html">Resources</a></li>
43     <li><a href="http://ring-lang.sourceforge.net/team.html">Team</a></li>
44     
45     <li><a title="Ring Homepage" href="http://ring-lang.net/">Website</a></li>
46     <li><a title="総合索引" href="genindex.html">Index</a></li>
47     <li>
48       
49       
50 <form action="search.html" method="get">
51   <input type="text" name="q" placeholder="Search" />
52   <input type="hidden" name="check_keywords" value="yes" />
53   <input type="hidden" name="area" value="default" />
54 </form>
55       
56     </li>
57   </ul>
58 </div>
59
60 <div class="related">
61     <h3>ナビゲーション</h3>
62     <ul>
63       <li class="right">
64         <a href="distribute.html" title="Ring アプリケーションの配布方法">
65           次へ &raquo;
66         </a>
67       </li>
68       <li class="right">
69         <a href="compiler.html" title="コマンドラインオプション">
70           &raquo; 前へ
71         </a>
72          |
73       </li>
74       <li>
75         <a href="index.html">プログラミング言語 Ring 1.12 取扱説明書</a>
76          &raquo;
77       </li>
78       
79       <li>性能改善に関する情報</li> 
80     </ul>
81 </div>
82   
83
84     <div class="document">
85       <div class="documentwrapper">
86         <div class="bodywrapper">
87           <div class="body" role="main">
88             
89   <div class="section" id="index-0">
90 <span id="id1"></span><h1>性能改善に関する情報<a class="headerlink" href="#index-0" title="このヘッドラインへのパーマリンク">¶</a></h1>
91 <p>Ring の性能改善方法を学びます。</p>
92 <div class="section" id="index-1">
93 <span id="id2"></span><h2>リストの作成<a class="headerlink" href="#index-1" title="このヘッドラインへのパーマリンク">¶</a></h2>
94 <p>用例:</p>
95 <div class="highlight-ring"><div class="highlight"><pre><span class="o">?</span> <span class="s">&quot;Create the list using the Range operator&quot;</span>
96 <span class="n">t1</span> <span class="o">=</span> <span class="n">clock</span><span class="p">()</span>
97 <span class="n">aList</span> <span class="o">=</span> <span class="mi">1</span><span class="p">:</span><span class="mi">1000000</span>
98 <span class="o">?</span> <span class="s">&quot;Time : &quot;</span> <span class="o">+</span> <span class="p">((</span><span class="n">clock</span><span class="p">()</span><span class="o">-</span><span class="n">t1</span><span class="p">)</span><span class="o">/</span><span class="n">clockspersecond</span><span class="p">())</span> <span class="o">+</span> <span class="s">&quot; seconds&quot;</span>
99
100 <span class="o">?</span> <span class="s">&quot;Create the list using the For loop&quot;</span>
101 <span class="n">t1</span> <span class="o">=</span> <span class="n">clock</span><span class="p">()</span>
102 <span class="n">aList</span> <span class="o">=</span> <span class="o">[]</span>
103 <span class="k">for</span> <span class="n">x</span> <span class="o">=</span> <span class="mi">1</span> <span class="k">to</span> <span class="mi">1000000</span>
104         <span class="n">aList</span> <span class="o">+</span> <span class="n">x</span>
105 <span class="k">next</span>
106 <span class="o">?</span> <span class="s">&quot;Time : &quot;</span> <span class="o">+</span> <span class="p">((</span><span class="n">clock</span><span class="p">()</span><span class="o">-</span><span class="n">t1</span><span class="p">)</span><span class="o">/</span><span class="n">clockspersecond</span><span class="p">())</span> <span class="o">+</span> <span class="s">&quot; seconds&quot;</span>
107
108 <span class="o">?</span> <span class="s">&quot;Create the list using the list() function and the For loop&quot;</span>
109 <span class="n">t1</span> <span class="o">=</span> <span class="n">clock</span><span class="p">()</span>
110 <span class="n">aList</span> <span class="o">=</span> <span class="kt">list</span><span class="p">(</span><span class="mi">1000000</span><span class="p">)</span>
111 <span class="k">for</span> <span class="n">x</span> <span class="o">=</span> <span class="mi">1</span> <span class="k">to</span> <span class="mi">1000000</span>
112         <span class="n">aList</span><span class="o">[</span><span class="n">x</span><span class="o">]</span> <span class="o">=</span> <span class="n">x</span>
113 <span class="k">next</span>
114 <span class="o">?</span> <span class="s">&quot;Time : &quot;</span> <span class="o">+</span> <span class="p">((</span><span class="n">clock</span><span class="p">()</span><span class="o">-</span><span class="n">t1</span><span class="p">)</span><span class="o">/</span><span class="n">clockspersecond</span><span class="p">())</span> <span class="o">+</span> <span class="s">&quot; seconds&quot;</span>
115 </pre></div>
116 </div>
117 <p>実行結果:</p>
118 <div class="highlight-none"><div class="highlight"><pre>Create the list using the Range operator
119 Time : 0.48 seconds
120 Create the list using the For loop
121 Time : 0.79 seconds
122 Create the list using the list() function and the For loop
123 Time : 1.56 seconds
124 </pre></div>
125 </div>
126 <div class="admonition note">
127 <p class="first admonition-title">注釈</p>
128 <p class="last">リストの作成で for ループ、または list() 関数を使用するよりも、範囲演算子のほうが速いです。</p>
129 </div>
130 <div class="admonition note">
131 <p class="first admonition-title">注釈</p>
132 <p class="last">リストの追加で add() 関数を使用するよりも、連結演算子‘+’を使用したほうが関数呼び出しのオーバーヘッドが少ないため速いです。ただしソースコードの可読性は落ちる場合があります。</p>
133 </div>
134 <div class="admonition note">
135 <p class="first admonition-title">注釈</p>
136 <p class="last">処理に時間が掛かり過ぎるため copy() 関数で数十万件を超える大量のテストデータを作成しないでください。</p>
137 </div>
138 </div>
139 <div class="section" id="index-2">
140 <span id="id3"></span><h2>算術演算子<a class="headerlink" href="#index-2" title="このヘッドラインへのパーマリンク">¶</a></h2>
141 <p>用例:</p>
142 <div class="highlight-ring"><div class="highlight"><pre><span class="o">?</span> <span class="s">&quot;Using * operator&quot;</span>
143 <span class="n">t1</span> <span class="o">=</span> <span class="n">clock</span><span class="p">()</span>
144 <span class="k">for</span> <span class="n">x</span> <span class="o">=</span> <span class="mi">1</span> <span class="k">to</span> <span class="mi">1000000</span>
145         <span class="n">out</span> <span class="o">=</span> <span class="n">x</span> <span class="o">*</span> <span class="mi">2</span>
146 <span class="k">next</span>
147 <span class="o">?</span> <span class="s">&quot;Time : &quot;</span> <span class="o">+</span> <span class="p">((</span><span class="n">clock</span><span class="p">()</span><span class="o">-</span><span class="n">t1</span><span class="p">)</span><span class="o">/</span><span class="n">clockspersecond</span><span class="p">())</span> <span class="o">+</span> <span class="s">&quot; seconds&quot;</span>
148
149 <span class="o">?</span> <span class="s">&quot;Using *= operator&quot;</span>
150 <span class="n">t1</span> <span class="o">=</span> <span class="n">clock</span><span class="p">()</span>
151 <span class="k">for</span> <span class="n">x</span> <span class="o">=</span> <span class="mi">1</span> <span class="k">to</span> <span class="mi">1000000</span>
152         <span class="n">out</span> <span class="o">=</span> <span class="n">x</span>
153         <span class="n">out</span> <span class="o">*=</span> <span class="mi">2</span>
154 <span class="k">next</span>
155 <span class="o">?</span> <span class="s">&quot;Time : &quot;</span> <span class="o">+</span> <span class="p">((</span><span class="n">clock</span><span class="p">()</span><span class="o">-</span><span class="n">t1</span><span class="p">)</span><span class="o">/</span><span class="n">clockspersecond</span><span class="p">())</span> <span class="o">+</span> <span class="s">&quot; seconds&quot;</span>
156 </pre></div>
157 </div>
158 <p>実行結果:</p>
159 <div class="highlight-none"><div class="highlight"><pre>Using * operator
160 Time : 1.34 seconds
161 Using *= operator
162 Time : 0.47 seconds
163 </pre></div>
164 </div>
165 <div class="admonition note">
166 <p class="first admonition-title">注釈</p>
167 <p class="last">* 演算子よりも *= 演算子を使用したほうが速いです。</p>
168 </div>
169 </div>
170 <div class="section" id="len-for">
171 <span id="index-3"></span><h2>len() と For ループの使用<a class="headerlink" href="#len-for" title="このヘッドラインへのパーマリンク">¶</a></h2>
172 <p>用例:</p>
173 <div class="highlight-ring"><div class="highlight"><pre><span class="n">aList</span> <span class="o">=</span> <span class="mi">1</span><span class="p">:</span><span class="mi">1000000</span>
174
175 <span class="o">?</span> <span class="s">&quot;Using len() in the For loop&quot;</span>
176 <span class="n">t1</span> <span class="o">=</span> <span class="n">clock</span><span class="p">()</span>
177 <span class="k">for</span> <span class="n">x</span> <span class="o">=</span> <span class="mi">1</span> <span class="k">to</span> <span class="n">len</span><span class="p">(</span><span class="n">aList</span><span class="p">)</span>
178 <span class="k">next</span>
179 <span class="o">?</span> <span class="s">&quot;Time : &quot;</span> <span class="o">+</span> <span class="p">((</span><span class="n">clock</span><span class="p">()</span><span class="o">-</span><span class="n">t1</span><span class="p">)</span><span class="o">/</span><span class="n">clockspersecond</span><span class="p">())</span> <span class="o">+</span> <span class="s">&quot; seconds&quot;</span>
180
181 <span class="o">?</span> <span class="s">&quot;Using len() before the For loop&quot;</span>
182 <span class="n">t1</span> <span class="o">=</span> <span class="n">clock</span><span class="p">()</span>
183 <span class="n">nMax</span> <span class="o">=</span> <span class="n">len</span><span class="p">(</span><span class="n">aList</span><span class="p">)</span>
184 <span class="k">for</span> <span class="n">x</span> <span class="o">=</span> <span class="mi">1</span> <span class="k">to</span> <span class="n">nMax</span>
185 <span class="k">next</span>
186 <span class="o">?</span> <span class="s">&quot;Time : &quot;</span> <span class="o">+</span> <span class="p">((</span><span class="n">clock</span><span class="p">()</span><span class="o">-</span><span class="n">t1</span><span class="p">)</span><span class="o">/</span><span class="n">clockspersecond</span><span class="p">())</span> <span class="o">+</span> <span class="s">&quot; seconds&quot;</span>
187 </pre></div>
188 </div>
189 <p>実行結果:</p>
190 <div class="highlight-none"><div class="highlight"><pre>Using len() in the For loop
191 Time : 5.50 seconds
192 Using len() before the For loop
193 Time : 0.24 seconds
194 </pre></div>
195 </div>
196 <div class="admonition note">
197 <p class="first admonition-title">注釈</p>
198 <p class="last">Len() 関数は For ループ内ではなく For ループの手前で使用したほうが早いです。</p>
199 </div>
200 </div>
201 <div class="section" id="index-4">
202 <span id="id4"></span><h2>関数とメソッドの呼び出し<a class="headerlink" href="#index-4" title="このヘッドラインへのパーマリンク">¶</a></h2>
203 <p>用例:</p>
204 <div class="highlight-ring"><div class="highlight"><pre><span class="o">?</span> <span class="s">&quot;calling 100000 functions&quot;</span>
205 <span class="n">t1</span> <span class="o">=</span> <span class="n">clock</span><span class="p">()</span>
206 <span class="k">for</span> <span class="n">x</span> <span class="o">=</span> <span class="mi">1</span> <span class="k">to</span> <span class="mi">100000</span>
207         <span class="n">test</span><span class="p">()</span>
208 <span class="k">next</span>
209 <span class="o">?</span> <span class="s">&quot;Time : &quot;</span> <span class="o">+</span> <span class="p">((</span><span class="n">clock</span><span class="p">()</span><span class="o">-</span><span class="n">t1</span><span class="p">)</span><span class="o">/</span><span class="n">clockspersecond</span><span class="p">())</span> <span class="o">+</span> <span class="s">&quot; seconds&quot;</span>
210
211 <span class="n">o1</span> <span class="o">=</span> <span class="k">new</span> <span class="n">test</span>
212
213 <span class="o">?</span> <span class="s">&quot;calling 100000 methods using the dot operator&quot;</span>
214 <span class="n">t1</span> <span class="o">=</span> <span class="n">clock</span><span class="p">()</span>
215 <span class="k">for</span> <span class="n">x</span> <span class="o">=</span> <span class="mi">1</span> <span class="k">to</span> <span class="mi">100000</span>
216         <span class="n">o1</span><span class="p">.</span><span class="n">test</span><span class="p">()</span>
217 <span class="k">next</span>
218 <span class="o">?</span> <span class="s">&quot;Time : &quot;</span> <span class="o">+</span> <span class="p">((</span><span class="n">clock</span><span class="p">()</span><span class="o">-</span><span class="n">t1</span><span class="p">)</span><span class="o">/</span><span class="n">clockspersecond</span><span class="p">())</span> <span class="o">+</span> <span class="s">&quot; seconds&quot;</span>
219
220 <span class="o">?</span> <span class="s">&quot;calling 100000 methods using braces &quot;</span>
221 <span class="n">t1</span> <span class="o">=</span> <span class="n">clock</span><span class="p">()</span>
222 <span class="k">for</span> <span class="n">x</span> <span class="o">=</span> <span class="mi">1</span> <span class="k">to</span> <span class="mi">100000</span>
223         <span class="n">o1</span> <span class="p">{</span> <span class="n">test</span><span class="p">()</span> <span class="p">}</span>
224 <span class="k">next</span>
225 <span class="o">?</span> <span class="s">&quot;Time : &quot;</span> <span class="o">+</span> <span class="p">((</span><span class="n">clock</span><span class="p">()</span><span class="o">-</span><span class="n">t1</span><span class="p">)</span><span class="o">/</span><span class="n">clockspersecond</span><span class="p">())</span> <span class="o">+</span> <span class="s">&quot; seconds&quot;</span>
226
227
228 <span class="k">func</span> <span class="n">test</span>
229
230 <span class="k">class</span> <span class="n">test</span>
231         <span class="k">func</span> <span class="n">test</span>
232 </pre></div>
233 </div>
234 <p>実行結果:</p>
235 <div class="highlight-none"><div class="highlight"><pre>calling 100000 functions
236 Time : 0.28 seconds
237 calling 100000 methods using the dot operator
238 Time : 0.36 seconds
239 calling 100000 methods using braces
240 Time : 1.19 seconds
241 </pre></div>
242 </div>
243 <div class="admonition note">
244 <p class="first admonition-title">注釈</p>
245 <p class="last">メソッドの呼び出しよりも、関数の呼び出しのほうが僅かに速いです。</p>
246 </div>
247 <div class="admonition note">
248 <p class="first admonition-title">注釈</p>
249 <p class="last">メソッドの呼び出しで弓括弧を使用するよりも、ドット演算子を使用したほうが速いです。</p>
250 </div>
251 </div>
252 </div>
253
254
255           </div>
256         </div>
257       </div>
258       <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
259         <div class="sphinxsidebarwrapper"><h3>ページの内容</h3>
260 <ul>
261 <li><a class="reference internal" href="#">性能改善に関する情報</a><ul>
262 <li><a class="reference internal" href="#index-1">リストの作成</a></li>
263 <li><a class="reference internal" href="#index-2">算術演算子</a></li>
264 <li><a class="reference internal" href="#len-for">len() と For ループの使用</a></li>
265 <li><a class="reference internal" href="#index-4">関数とメソッドの呼び出し</a></li>
266 </ul>
267 </li>
268 </ul>
269
270
271   <h4>前のトピックへ</h4>
272   <p class="topless"><a href="compiler.html"
273                         title="前の章へ">コマンドラインオプション</a></p>
274   <h4>次のトピックへ</h4>
275   <p class="topless"><a href="distribute.html"
276                         title="次の章へ">Ring アプリケーションの配布方法</a></p>
277   <div role="note" aria-label="source link">
278     <h3>このページ</h3>
279     <ul class="this-page-menu">
280       <li><a href="_sources/performancetips.txt"
281             rel="nofollow">ソースコードを表示</a></li>
282     </ul>
283    </div>
284       
285 <form action="search.html" method="get">
286   <input type="text" name="q" placeholder="Search" />
287   <input type="hidden" name="check_keywords" value="yes" />
288   <input type="hidden" name="area" value="default" />
289 </form>
290       
291         </div>
292       </div>
293       <div class="clearer"></div>
294     </div>
295 <footer class="footer">
296   <p class="pull-right">
297     <a href="_sources/performancetips.txt"
298        rel="nofollow">ソースコードを表示</a> &nbsp;
299     <a href="#">冒頭へ戻る</a></p>
300   <p>
301     &copy; Copyright 2016-2020, Ring Team.<br/>
302     Created using <a href="http://www.sphinx-doc.org/en/stable/">Sphinx</a> 1.3.6 / astropy-sphinx-theme 1.1 (isVowel)
303   </p>
304 </footer>
305   </body>
306 </html>