📄 bench_8cpp-source.html
字号:
00128 }00129 <span class="keywordflow">while</span> (timeTaken < 2.0/3*timeTotal);00130 00131 OutputResultBytes(name, length, timeTaken);00132 }00133 00134 <span class="keywordtype">void</span> BenchMark(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <a class="code" href="class_stream_transformation.html">StreamTransformation</a> &cipher, <span class="keywordtype">double</span> timeTotal)00135 {00136 <span class="keyword">const</span> <span class="keywordtype">int</span> BUF_SIZE=1024;00137 <a class="code" href="class_sec_block.html">SecByteBlock</a> buf(BUF_SIZE);00138 clock_t start = clock();00139 00140 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> i=0, length=BUF_SIZE;00141 <span class="keywordtype">double</span> timeTaken;00142 <span class="keywordflow">do</span>00143 {00144 length *= 2;00145 <span class="keywordflow">for</span> (; i<length; i+=BUF_SIZE)00146 cipher.<a class="code" href="class_stream_transformation.html#_symmetric_ciphera8">ProcessString</a>(buf, BUF_SIZE);00147 timeTaken = double(clock() - start) / CLOCK_TICKS_PER_SECOND;00148 }00149 <span class="keywordflow">while</span> (timeTaken < 2.0/3*timeTotal);00150 00151 OutputResultBytes(name, length, timeTaken);00152 }00153 00154 <span class="keywordtype">void</span> BenchMark(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <a class="code" href="class_hash_transformation.html">HashTransformation</a> &hash, <span class="keywordtype">double</span> timeTotal)00155 {00156 <span class="keyword">const</span> <span class="keywordtype">int</span> BUF_SIZE=1024;00157 <a class="code" href="class_sec_block.html">SecByteBlock</a> buf(BUF_SIZE);00158 <a class="code" href="class_l_c___r_n_g.html">LC_RNG</a> rng(time(NULL));00159 rng.<a class="code" href="class_random_number_generator.html#_x917_r_n_ga4">GenerateBlock</a>(buf, BUF_SIZE);00160 clock_t start = clock();00161 00162 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> i=0, length=BUF_SIZE;00163 <span class="keywordtype">double</span> timeTaken;00164 <span class="keywordflow">do</span>00165 {00166 length *= 2;00167 <span class="keywordflow">for</span> (; i<length; i+=BUF_SIZE)00168 hash.<a class="code" href="class_hash_transformation.html#_x_m_a_c_ca5">Update</a>(buf, BUF_SIZE);00169 timeTaken = double(clock() - start) / CLOCK_TICKS_PER_SECOND;00170 }00171 <span class="keywordflow">while</span> (timeTaken < 2.0/3*timeTotal);00172 00173 OutputResultBytes(name, length, timeTaken);00174 }00175 00176 <span class="keywordtype">void</span> BenchMark(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &bt, <span class="keywordtype">double</span> timeTotal)00177 {00178 <span class="keyword">const</span> <span class="keywordtype">int</span> BUF_SIZE=1024;00179 <a class="code" href="class_sec_block.html">SecByteBlock</a> buf(BUF_SIZE);00180 <a class="code" href="class_l_c___r_n_g.html">LC_RNG</a> rng(time(NULL));00181 rng.<a class="code" href="class_random_number_generator.html#_x917_r_n_ga4">GenerateBlock</a>(buf, BUF_SIZE);00182 clock_t start = clock();00183 00184 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> i=0, length=BUF_SIZE;00185 <span class="keywordtype">double</span> timeTaken;00186 <span class="keywordflow">do</span>00187 {00188 length *= 2;00189 <span class="keywordflow">for</span> (; i<length; i+=BUF_SIZE)00190 bt.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_0">Put</a>(buf, BUF_SIZE);00191 timeTaken = double(clock() - start) / CLOCK_TICKS_PER_SECOND;00192 }00193 <span class="keywordflow">while</span> (timeTaken < 2.0/3*timeTotal);00194 00195 OutputResultBytes(name, length, timeTaken);00196 }00197 00198 <span class="keywordtype">void</span> BenchMarkEncryption(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <a class="code" href="class_p_k___encryptor.html">PK_Encryptor</a> &key, <span class="keywordtype">double</span> timeTotal, <span class="keywordtype">bool</span> pc=<span class="keyword">false</span>)00199 {00200 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len = 16;00201 <a class="code" href="class_l_c___r_n_g.html">LC_RNG</a> rng(time(NULL));00202 <a class="code" href="class_sec_block.html">SecByteBlock</a> plaintext(len), ciphertext(key.CiphertextLength(len));00203 rng.<a class="code" href="class_random_number_generator.html#_x917_r_n_ga4">GenerateBlock</a>(plaintext, len);00204 00205 clock_t start = clock();00206 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;00207 <span class="keywordtype">double</span> timeTaken;00208 <span class="keywordflow">for</span> (timeTaken=(<span class="keywordtype">double</span>)0, i=0; timeTaken < timeTotal; timeTaken = double(clock() - start) / CLOCK_TICKS_PER_SECOND, i++)00209 key.Encrypt(rng, plaintext, len, ciphertext);00210 00211 OutputResultOperations(name, <span class="stringliteral">"Encryption"</span>, pc, i, timeTaken);00212 00213 <span class="keywordflow">if</span> (!pc && key.GetMaterial().SupportsPrecomputation())00214 {00215 key.AccessMaterial().Precompute(16);00216 BenchMarkEncryption(name, key, timeTotal, <span class="keyword">true</span>);00217 }00218 }00219 00220 <span class="keywordtype">void</span> BenchMarkDecryption(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <a class="code" href="class_p_k___decryptor.html">PK_Decryptor</a> &priv, <a class="code" href="class_p_k___encryptor.html">PK_Encryptor</a> &pub, <span class="keywordtype">double</span> timeTotal)00221 {00222 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len = 16;00223 <a class="code" href="class_l_c___r_n_g.html">LC_RNG</a> rng(time(NULL));00224 <a class="code" href="class_sec_block.html">SecByteBlock</a> ciphertext(pub.<a class="code" href="class_p_k___crypto_system.html#_t_f___public_object_impl_3_01_t_f___encryptor_base_00_01_s_c_h_e_m_e___o_p_t_i_o_n_s_01_4a15">CiphertextLength</a>(len));00225 <a class="code" href="class_sec_block.html">SecByteBlock</a> plaintext(pub.<a class="code" href="class_p_k___crypto_system.html#_t_f___public_object_impl_3_01_t_f___encryptor_base_00_01_s_c_h_e_m_e___o_p_t_i_o_n_s_01_4a13">MaxPlaintextLength</a>(ciphertext.<a class="code" href="class_sec_block.html#_sec_block_with_hinta13">size</a>()));00226 rng.<a class="code" href="class_random_number_generator.html#_x917_r_n_ga4">GenerateBlock</a>(plaintext, len);00227 pub.<a class="code" href="class_p_k___encryptor.html#_t_f___crypto_system_base_3_01_p_k___fixed_length_encryptor_00_01_t_f___base_3_01_randomized_trapdoor_function_01_4_01_4a2">Encrypt</a>(rng, plaintext, len, ciphertext);00228 00229 clock_t start = clock();00230 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;00231 <span class="keywordtype">double</span> timeTaken;00232 <span class="keywordflow">for</span> (timeTaken=(<span class="keywordtype">double</span>)0, i=0; timeTaken < timeTotal; timeTaken = double(clock() - start) / CLOCK_TICKS_PER_SECOND, i++)00233 priv.<a class="code" href="class_p_k___decryptor.html#_p_k___decryptora0">Decrypt</a>(ciphertext, ciphertext.<a class="code" href="class_sec_block.html#_sec_block_with_hinta13">size</a>(), plaintext);00234 00235 OutputResultOperations(name, <span class="stringliteral">"Decryption"</span>, <span class="keyword">false</span>, i, timeTaken);00236 }00237 00238 <span class="keywordtype">void</span> BenchMarkSigning(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <a class="code" href="class_p_k___signer.html">PK_Signer</a> &key, <span class="keywordtype">double</span> timeTotal, <span class="keywordtype">bool</span> pc=<span class="keyword">false</span>)00239 {00240 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len = 16;00241 <a class="code" href="class_l_c___r_n_g.html">LC_RNG</a> rng(time(NULL));00242 <a class="code" href="class_sec_block.html">SecByteBlock</a> message(len), signature(key.SignatureLength());00243 rng.<a class="code" href="class_random_number_generator.html#_x917_r_n_ga4">GenerateBlock</a>(message, len);00244 00245 clock_t start = clock();00246 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;00247 <span class="keywordtype">double</span> timeTaken;00248 <span class="keywordflow">for</span> (timeTaken=(<span class="keywordtype">double</span>)0, i=0; timeTaken < timeTotal; timeTaken = double(clock() - start) / CLOCK_TICKS_PER_SECOND, i++)00249 key.SignMessage(rng, message, len, signature);00250 00251 OutputResultOperations(name, <span class="stringliteral">"Signature"</span>, pc, i, timeTaken);00252 00253 <span class="keywordflow">if</span> (!pc && key.GetMaterial().SupportsPrecomputation())00254 {00255 key.AccessMaterial().Precompute(16);00256 BenchMarkSigning(name, key, timeTotal, <span class="keyword">true</span>);00257 }00258 }00259 00260 <span class="keywordtype">void</span> BenchMarkVerification(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> <a class="code" href="class_p_k___signer.html">PK_Signer</a> &priv, <a class="code" href="class_p_k___verifier.html">PK_Verifier</a> &pub, <span class="keywordtype">double</span> timeTotal, <span class="keywordtype">bool</span> pc=<span class="keyword">false</span>)00261 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -