chrono::high_resolution_clock::time_point time_start, time_end;
列印引數
print_parameters
(context)
;cout << endl;
auto
&parms = context-
>
first_context_data()
->
parms()
;auto
&plain_modulus = parms.
plain_modulus()
;size_t poly_modulus_degree = parms.
poly_modulus_degree()
;
生成公私鑰 for context
cout <<
"generating secret/public keys: "
;keygenerator keygen
(context)
;cout <<
"done"
<< endl;
auto secret_key = keygen.
secret_key()
;auto public_key = keygen.
public_key()
;relinkeys relin_keys;
galoiskeys gal_keys;
時間
chrono::microseconds time_diff;
if (context->using_keyswitching())
生成伽羅瓦鍵。在更大的示例中,galois鍵可以使用大量記憶體,這在受限的系統中可能是乙個問題。
使用者應該嘗試一些較 大的測試執行,並觀察它們對記憶體池分配大小的影響。從列印結果可以看出,
金鑰生成也需要很長時間
cout <<
"generating galois keys: "
;time_start = chrono::high_resolution_clock::
now();
gal_keys = keygen.
galois_keys()
;time_end = chrono::high_resolution_clock::
now();
time_diff = chrono::duration_cast
(time_end - time_start)
;cout <<
"done ["
<< time_diff.
count()
<<
" microseconds]"
<< endl;
}
encryptor encryptor
(context, public_key)
;decryptor decryptor
(context, secret_key)
;evaluator evaluator
(context)
;batchencoder batch_encoder
(context)
;integerencoder encoder
(context)
;
這些將儲存每個操作使用的總時間。
chrono::microseconds time_batch_sum(0
);chrono::microseconds time_unbatch_sum(0
);chrono::microseconds time_encrypt_sum(0
);chrono::microseconds time_decrypt_sum(0
);chrono::microseconds time_add_sum(0
);chrono::microseconds time_multiply_sum(0
);chrono::microseconds time_multiply_plain_sum(0
);chrono::microseconds time_square_sum(0
);chrono::microseconds time_relinearize_sum(0
);chrono::microseconds time_rotate_rows_one_step_sum(0
);chrono::microseconds time_rotate_rows_random_sum(0
);chrono::microseconds time_rotate_columns_sum(0
);
how many times to run the test?
int count =
10;
填充要進行批處理的值向量
size_t slot_count = batch_encoder.
slot_count()
;vector<
uint64_t
> pod_vector;
random_device rd;
for(size_t i =
0; i < slot_count; i++
)cout <<
"running tests "
;
qt之imx6庫編譯
qmake configuration for building with arm linux gnueabi g makefile generator unix config incremental qmake incremental style sublib 配置交叉編譯引數 imx6 cfla...
Swift學習之每日一tip 6 單例
近日,在翻看以前寫過的一些oc應用的時候,看到了oc的單例,然後暮然想要試著寫一寫swift下的單例,於是,在經過一番波折後,終於將swift下的單例寫了出來。栗子 instancetype sharednetworktools return instance oc下的單例大家都寫的滾瓜爛熟了,那麼...
單例模式之es3與es6雙版本(設計模式)
保證乙個類僅有以乙個例項,僅能被例項化 建立一次,並提供全域性的訪問點。單例模式是一種重要的設計模式,有些物件我們只需要建立乙個,比如瀏覽器的window物件,模態對話方塊。實現這種設計模式其實很簡單,最重要的是在建立例項的時候,用乙個標記變數判斷例項是否已經建立。function singleto...