アドバイスを求めています。私はそれを楽しんでできるので、独自の暗号化アルゴリズムを開発しました。今、私は新しいアイデアを試してみようとしています。
私のアイデアには、いくつかのアルゴリズムをより大きなものに統合することが含まれます。たとえば、 を呼び出して、、などX.Encrypt()
を使用します。この種の操作を実行すると、 、、メソッド呼び出しごとに 1 バイトのメソッド オーバーヘッドが致命的になります。数ミリ秒から数分になります。質問はありますか?A.Encrypt()
B.Encrypt()
C.Encrypt()
A
B
C
問題を軽減するためのコード設計のヒントとコツを探しているだけです。
ありがとうございます。
アップデート
問題のコード例:
//fast
moduleA.Transform(true, buffer, 0, buffer.Length);
moduleB.Transform(true, buffer, 0, buffer.Length);
//slow
for (int L = 0; L < buffer.Length; )
{
moduleA.Transform(true, buffer, L++, 1);
moduleB.Transform(true, buffer, L++, 1);
}
この問題は、呼び出し方法に固有のものであることを知っています。私の目標は、私のやり方を変えることです。Transform メソッド内で改善できることはわかっています。高速は約 24 秒で動作しますが、低速は数分かかります。明らかに、メソッドからのオーバーヘッドであり、プロファイラーは必要ありません:)
やってみたいアイデアがあります。Transform メソッドの外側でループする代わりに、ニーズに合わせて各メソッド内での実行方法を変更する「実行モード」の使用を考えています。したがって、Transform メソッド内でバッチとして実行される 1 バイトおきの暗号化を実行できます。これにより、私が得ているオーバーヘッドが解消されると思います。
最終更新 (私自身の問題を解決しましたが、まだアイデアを受け入れています!)
Transform メソッド内でループ レートをインクリメントするとうまくいきました。
私がやったことは次のとおりで、うまくいくようです:
ITransformationModule moduleA = TransformationFactory.GetModuleInstance("Subspace28");
ITransformationModule moduleB = TransformationFactory.GetModuleInstance("Ataxia");
moduleA.IncrementInterval = 2;
moduleB.IncrementInterval = 2;
moduleA.Transform(true, buffer, 0, buffer.Length);
moduleB.Transform(true, buffer, 1, buffer.Length);
これは、私の作業用 VM で 100MB の場合、約 12 秒で実行されます。貢献してくれた皆さん、ありがとう!このように試すようになったのは、さまざまな反応の組み合わせでした。皆さんに感謝します!
これは現時点での概念実証にすぎません。それはより大きなものに向かって構築されています!:)