これは事実です:
私のプログラムには、長さ Y の配列の X 個のランダムな要素が必要です。X は常に Y より低い
だから私は何をしますか:方法#1:
1. shuffle the array
2. get the X elements from index 0 to X-1
3. (back to step 1) repeat like 2.000.000 times or more.
配列をシャッフルすると多くのリソースが必要になるため、プログラムを高速化したいと考えています。私はこのようなことを考えました:
方法#2:
1. find out how often X fits into Y (asume X = 6, and X = 20)
2. shuffle the array
3a. get the X elements from index 0 to 5
3b. get the X elements from index 6 to 11
3c. get the X elements from index 12 to 17
(index 18 and 19 will not be used in this case)
4. (back to step 2) repeat like 2.000.000 times or more.
いくつかの試行の後、両方の方法で期待される結果を小数点以下 3 桁まで取得します。これは私の目的には絶対に問題ありません。
WAY#2 は WAY#1 よりも 25 ~ 30% 高速です
どう思いますか?パフォーマンスを向上させるためにわずかな粗悪品を受け入れる必要がありますか、それとも単に悪い習慣であり、避けるべきですか?