回答編集履歴

1

比較まとめ

2017/08/22 14:40

投稿

think49
think49

スコア18162

test CHANGED
@@ -156,4 +156,152 @@
156
156
 
157
157
 
158
158
 
159
+ ### 比較まとめ
160
+
161
+
162
+
163
+ コードの最適化を進めた上で比較してみました。
164
+
165
+
166
+
167
+ ```JavaScript
168
+
169
+ var bench = new Array(10000000);
170
+
171
+ var sTime, fTime;
172
+
173
+
174
+
175
+ /**
176
+
177
+ * _.each
178
+
179
+ */
180
+
181
+ sTime = new Date();
182
+
183
+ var sqrt = Math.sqrt,
184
+
185
+ pow = Math.pow;
186
+
187
+ _.each(bench, function (value, index) {
188
+
189
+ bench[index] = sqrt(pow(12345) + pow(53142));
190
+
191
+ });
192
+
193
+ fTime = new Date();
194
+
195
+ console.log('_.each', fTime - sTime);
196
+
197
+
198
+
199
+ /**
200
+
201
+ * Array.prototype.forEach
202
+
203
+ */
204
+
205
+ sTime = new Date();
206
+
207
+ var sqrt = Math.sqrt,
208
+
209
+ pow = Math.pow;
210
+
211
+ bench.forEach(function (value, index, array) {
212
+
213
+ array[index] = sqrt(pow(12345) + pow(53142));
214
+
215
+ });
216
+
217
+ fTime = new Date();
218
+
219
+ console.log('Array.prototype.forEach', fTime - sTime);
220
+
221
+
222
+
223
+ /**
224
+
225
+ * for
226
+
227
+ */
228
+
229
+ sTime = new Date();
230
+
231
+ for (var i = 0, len = bench.length, sqrt = Math.sqrt, pow = Math.pow; i < len; i++) {
232
+
233
+ bench[i] = sqrt(pow(12345) + pow(53142));
234
+
235
+ }
236
+
237
+ fTime = new Date();
238
+
239
+ console.log('for', fTime - sTime);
240
+
241
+
242
+
243
+ /**
244
+
245
+ * while
246
+
247
+ */
248
+
249
+ sTime = new Date();
250
+
251
+ var i = bench.length,
252
+
253
+ sqrt = Math.sqrt,
254
+
255
+ pow = Math.pow;
256
+
257
+
258
+
259
+ while (i--) {
260
+
261
+ bench[i] = sqrt(pow(12345) + pow(53142));
262
+
263
+ }
264
+
265
+
266
+
267
+ fTime = new Date();
268
+
269
+ console.log('while', fTime - sTime);
270
+
271
+ ```
272
+
273
+
274
+
275
+ 私の環境では、次の結果となりました。
276
+
277
+
278
+
279
+ ```JavaScript
280
+
281
+ "_.each 899"
282
+
283
+ "Array.prototype.forEach 658"
284
+
285
+ "for 574"
286
+
287
+ "while 570"
288
+
289
+ ```
290
+
291
+
292
+
293
+ - ライブラリはネイティブ機能に勝てません。
294
+
295
+ - 繰り返し処理において、関数呼び出しは制御構文(while, for 等)よりも遅いです。
296
+
297
+
298
+
299
+ ### 更新履歴
300
+
301
+
302
+
303
+ - 2017/08/22 23:40 「比較まとめ」の節を追記
304
+
305
+
306
+
159
307
  Re: airulove さん