lr_stop_transaction_instance()
終止由其句柄指定的事務執行個體的報告統計資訊。
double lr_stop_transaction_instance(long parent_handle);
參數說明:
parent_handle:唯一的事務句柄。
調用lr_stop_transaction_instance後,由“get”事務函數傳回的統計資訊隻反映直到調用的資料,直到調用lr_resume_transaction_instance。指定的事務執行個體必須已使用lr_start_transaction_instance打開。
但是,資料收集不會中斷。在調用lr_resume_transaction_instance之後,“get”函數自事務執行個體開始後傳回所有資料。此外,分析測試時的最終結果将反映總值,包括交易停止和恢複之間的期間。
如果未調用lr_resume_transaction_instance,則最終結果僅反映到調用lr_stop_transaction_instance之前的統計資訊。
parent_handle是從對建立執行個體的lr_start_transaction_instance的調用傳回的值。
lr_stop_transaction_instance和lr_resume_transaction_instance可用于有條件地收集有關開始或所有事務的資訊。
請注意,在調用lr_stop_transaction_instance時,您将無法區分疊代之間的分析,也可能無法區分疊代。
要更靈活地有條件地記錄事務時間,請參閱lr_start_sub_transaction,lr_set_transaction和lr_start_timer。
lr_stop_transaction_instance傳回執行個體的持續時間(以秒為機關)。
示例:lr_stop_transaction_instance和lr_resume_instance
以下示例顯示lr_stop_transaction_instance和lr_resume_transaction_instance的效果。
StopResumeInstance()
{
long hdl;
int i, baseIter = 100;
char dude[200];
double dur;
hdl = lr_start_transaction_instance("Stop%Start", 0);
for (i=0; i< (10 * baseIter); ++i)
sprintf(dude,
"Artificially add elapsed time = %d", i);
//Add 1/2 second waste time
lr_wasted_time(500);
lr_output_message("First time duration = %f, Waste = %f",
lr_get_trans_instance_duration(hdl),
lr_get_trans_instance_wasted_time(hdl));
// Stop the transaction
dur = lr_stop_transaction_instance(hdl);
lr_output_message("Duration from stop call = %f", dur);
//Add 1/2 second waste time
lr_wasted_time(500);
lr_output_message("Immediately after stop = %f, Waste = %f",
lr_get_trans_instance_duration(hdl),
lr_get_trans_instance_wasted_time(hdl));
// Ensure that some time passes
for (i=0; i< (10 * baseIter); ++i)
sprintf(dude,
"Artificially add elapsed time = %d", i);
lr_output_message("After stop and loop = %f, Waste = %f",
lr_get_trans_instance_duration(hdl),
lr_get_trans_instance_wasted_time(hdl));
// Resume the transaction
lr_resume_transaction_instance(hdl);
lr_output_message("After resume time = %f, Waste = %f",
lr_get_trans_instance_duration(hdl),
lr_get_trans_instance_wasted_time(hdl));
// Add time to duration
for (i=0; i< (10 * baseIter); ++i)
sprintf(dude,
"Artificially add elapsed time = %d", i);
lr_output_message("After resume and loop = %f, Waste = %f",
lr_get_trans_instance_duration(hdl),
lr_get_trans_instance_wasted_time(hdl));
// End transaction
lr_end_transaction_instance(hdl, LR_AUTO);
return 0;
}輸出:
第一持續時間= 0.609375,廢物= 0.500000
通知:事務停止%開始停止。
從停止呼叫的持續時間= 0.625000
停止後立即= 0.625000,廢物= 0.500000
停止和循環= 0.625000後,Waste = 0.500000
通知:事務停止%開始繼續。
在恢複時間= 1.265625之後,Waste = 1.000000
在恢複和循環= 1.875000之後,Waste = 1.000000
通知:事務停止%開始以通過狀态結束(持續時間:1.8750浪費時間:1.0000)。