親愛なるすべて、アレイ/メモリ操作スウィフト
私はメモリ管理のためスウィフトで高速なソリューションを探しています。私はどういう意味ですか?私は配列(またはバッファ)を例えば1000000バイトで初期化し、ゼロ(0)で埋めて、別の配列(またはメモリバッファ)の所定の位置に挿入する必要があります。そして、各要素の値を素早く変更する必要があります。これはSwiftでどのように達成できますか?アレイのバージョンは次のとおりです。
1.新しいアレイの初期化 - それを行うには3つの方法があります。 1.38 MS
let tmp = Array<Int8>(count: 1000000, repeatedValue: 0)
オプションII - 時間:385.54 MS
let tmp = Array<Int8>(Repeat(count: 1000000, repeatedValue: 0))
- 時間
オプションI:私はこの方法の各々の10の連続実行時間を測定しましたオプションIII - 時間:586.43 ms
let ptr = UnsafeMutablePointer<Int8>.alloc(1000000)
ptr.initializeFrom(Repeat(count: 1000000, repeatedValue: 0))
オプションIIおよびIIIは、対気速度から借りています。私はIとIIは、オプションの「x」の位置に他のアレイで新しい配列を挿入
を
2.このoportunityを使用したいと;-)
共同編集のために、このような素敵な本を彼に感謝です私は以下を使用しています:array.insertContentsOf(tmp, at: x)
このような操作(「x」の値にかかわらず)に必要な時間は654.19 msです。私は本当にオプションIIIでこれを行う方法を知らない。
3.変更新しいアレイの
値は、このような(もちろん)変更可能な値:
array[13453] = 20
プロセス全体をスピードアップするために、任意の勧告、特に挿入(パート2)、歓迎以上のものです。実装は配列を使用するかもしれません...ポインタ...要件が満たされているかどうかは実際問題ではありません。
I.
測定中にコンパイラの最適化を有効にしましたか? – Kubba
2番目の質問 - 大きなコレクションを使用する意思は何ですか? CoreGraphicsよりもイメージ処理が必要な場合は、このジョブをよりうまくやります。 – Kubba
最適化が役立ちました。どのような愚かな間違い。結論は何ですか?あまりコーディングしないでください...あなたの感覚を失い始めるでしょう。 私はそれを受け入れることができるように答えてください。 –