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)。