2017-03-16 19 views
0

私はウィキペディアにVigenère暗号化/復号化アルゴリズムを見ていた、と私は正しい/最も効率的であるアプローチ思ったんだけど間:Vigenere復号化および剰余

return a % b

と:

if a < 0  
    return a += b 
else 
    return a 

とき: は-b <= a <= b

または多分それは同等一度コンパイルされていますか?私を啓発するために

ありがとう:)

答えて

1

をIMO任意のpercievable違いがある前に、あなたは百万文字で長い文章を必要として、このナノ最適化は、ほとんど関心です。

モジュロ演算ブランチと条件分岐はどちらも、他の演算に比べてコストがかかり、非常にプロセッサアーキテクチャに依存します。だから知る唯一の方法は、現実的な状況にあるように十分な注意を払いながら、再現性のある結果を得ることです(少し矛盾します)。

これは、%が負の引数に対して真のモジュロ演算を実装していないことに注意してください。間違った結果が得られます。

+0

私は最適化を探していませんでしたが、私のコードに与える影響はごくわずかです。 しかし、あなたが '%'実装について言ったのは、私が期待していたものです。それは明らかに言語に依存します。私はハスケルで試して、 '%'は期待される結果を生み出すと思われますが、私は 'if文'を残しておきますありがとうございました:) –

+1

@MathersMax:代わりに '(a + c)%b'が動作します。よく選択された定数です。 –

関連する問題