summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author刘学利 <[email protected]>2023-08-06 08:03:34 +0000
committer刘学利 <[email protected]>2023-08-06 08:03:34 +0000
commit1851db6031fbcdbd331a13629bd328454c74ff81 (patch)
tree03062ad2e4c503b3370581f70d137ac0eaf03c34
parent684fed2a8ecb07fe550e69251e3f8c661c8ceb7b (diff)
✨ feat(rename api histogram): api conflict with fs3v4.0.1
-rw-r--r--CMakeLists.txt5
-rw-r--r--include/fieldstat/fieldstat.h8
-rw-r--r--src/fieldstat.c8
-rw-r--r--test/CMakeLists.txt2
-rw-r--r--test/test_exporter_json.cpp10
-rw-r--r--test/test_metric_histogram.cpp54
-rw-r--r--test/test_performance.cpp20
7 files changed, 53 insertions, 54 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4ab5f03..ea11efc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 2.8.8)
+cmake_minimum_required(VERSION 2.8.8...3.10)
message("-- CMAKE_C_COMPILER: ${CMAKE_C_COMPILER_ID}")
@@ -32,8 +32,7 @@ if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX "/opt/MESA" CACHE PATH "default install path" FORCE)
endif()
-set(CPP_BIN_PATH "/home/chenzizhan/cppcheck/cfg")
-find_program(CMAKE_CXX_CPPCHECK NAMES cppcheck HINTS ${CPP_BIN_PATH})
+find_program(CMAKE_CXX_CPPCHECK NAMES cppcheck)
if (CMAKE_CXX_CPPCHECK)
list(
APPEND CMAKE_CXX_CPPCHECK
diff --git a/include/fieldstat/fieldstat.h b/include/fieldstat/fieldstat.h
index a2a6e7a..6bf60ba 100644
--- a/include/fieldstat/fieldstat.h
+++ b/include/fieldstat/fieldstat.h
@@ -82,7 +82,7 @@ int fieldstat_register_hll(struct fieldstat *instance, int cube_id, const char *
* @param significant_figures: the precision of the histogram. Must be in [1, 5].
* @return metric id, if success; otherwise, return -1. Fail when cube is not registered, or the parameter is invalid.
*/
-int fieldstat_register_histogram(struct fieldstat *instance, int cube_id, const char *field_name, long long lowest_trackable_value, long long highest_trackable_value, int significant_figures);
+int fieldstat_register_hist(struct fieldstat *instance, int cube_id, const char *field_name, long long lowest_trackable_value, long long highest_trackable_value, int significant_figures);
/*
* @brief add a cell to the cube of cube_id. One cell represents a set of tags. In topk sampling mode, this function will update the cell ranking every time it is called.
@@ -126,7 +126,7 @@ int fieldstat_hll_add(struct fieldstat *instance, int cube_id, int metric_id, in
* @param value: value of the histogram metric.
* @return 0 if success. -1 if cube_id is invalid. -2 if metric_id is invalid, or the metric is not a METRIC_TYPE_HISTOGRAM. -3 if cell_id is invalid.
*/
-int fieldstat_histogram_record(struct fieldstat *instance, int cube_id, int metric_id, int cell_id, long long value);
+int fieldstat_hist_record(struct fieldstat *instance, int cube_id, int metric_id, int cell_id, long long value);
/*
* @brief Delete all the cells, also the content of every metrics. The cube and metrics are not deleted. Increase cell_version by 1.
@@ -163,8 +163,8 @@ int fieldstat_get_max_cell_num(const struct fieldstat *instance, int cube_id);
long long fieldstat_counter_get(const struct fieldstat *instance, int cube_id, int metric_id, int cell_id);
double fieldstat_hll_get(const struct fieldstat *instance, int cube_id, int metric_id, int cell_id);
-long long fieldstat_histogram_value_at_percentile(const struct fieldstat *instance, int cube_id, int metric_id, int cell_id, double percentile);
-long long fieldstat_histogram_count_le_value(const struct fieldstat *instance, int cube_id, int metric_id, int cell_id, long long value);
+long long fieldstat_hist_value_at_percentile(const struct fieldstat *instance, int cube_id, int metric_id, int cell_id, double percentile);
+long long fieldstat_hist_count_le_value(const struct fieldstat *instance, int cube_id, int metric_id, int cell_id, long long value);
void fieldstat_get_serialized_blob(const struct fieldstat *instance, int cube_id, int metric_id, int cell_id, char **blob, size_t *blob_size);
const char *fieldstat_get_metric_name(const struct fieldstat *instance, int cube_id, int metric_id);
diff --git a/src/fieldstat.c b/src/fieldstat.c
index 1b9eca2..e683f16 100644
--- a/src/fieldstat.c
+++ b/src/fieldstat.c
@@ -372,7 +372,7 @@ int fieldstat_register_hll(struct fieldstat *instance, int cube_id, const char *
return append_metric_to_cube(cube, metric);
}
-int fieldstat_register_histogram(struct fieldstat *instance, int cube_id, const char *field_name, long long lowest_trackable_value, long long highest_trackable_value, int significant_figures)
+int fieldstat_register_hist(struct fieldstat *instance, int cube_id, const char *field_name, long long lowest_trackable_value, long long highest_trackable_value, int significant_figures)
{
if (instance == NULL) {
printf("ERR: fieldstat instance is NULL\n");
@@ -480,7 +480,7 @@ int fieldstat_hll_add(struct fieldstat *instance, int cube_id, int metric_id, in
return 0;
}
-int fieldstat_histogram_record(struct fieldstat *instance, int cube_id, int metric_id, int cell_id, long long value)
+int fieldstat_hist_record(struct fieldstat *instance, int cube_id, int metric_id, int cell_id, long long value)
{
FIELDSTAT_GENERAL_CHECK(instance, cube_id, metric_id, cell_id, METRIC_TYPE_HISTOGRAM);
struct metric *metric = instance->cube[cube_id]->metrics[metric_id];
@@ -923,7 +923,7 @@ double fieldstat_hll_get(const struct fieldstat *instance, int cube_id, int metr
return metric_hll_get(metric, cell_id);
}
-long long fieldstat_histogram_value_at_percentile(const struct fieldstat *instance, int cube_id, int metric_id, int cell_id, double percentile)
+long long fieldstat_hist_value_at_percentile(const struct fieldstat *instance, int cube_id, int metric_id, int cell_id, double percentile)
{
const struct metric *metric = fieldstat_find_metric(instance, cube_id, metric_id);
if (metric == NULL || metric_get_type(metric) != METRIC_TYPE_HISTOGRAM) {
@@ -934,7 +934,7 @@ long long fieldstat_histogram_value_at_percentile(const struct fieldstat *instan
return metric_histogram_value_at_percentile(metric, cell_id, percentile);
}
-long long fieldstat_histogram_count_le_value(const struct fieldstat *instance, int cube_id, int metric_id, int cell_id, long long value)
+long long fieldstat_hist_count_le_value(const struct fieldstat *instance, int cube_id, int metric_id, int cell_id, long long value)
{
const struct metric *metric = fieldstat_find_metric(instance, cube_id, metric_id);
if (metric == NULL || metric_get_type(metric) != METRIC_TYPE_HISTOGRAM) {
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 7a9b139..d6a2bcf 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -9,7 +9,7 @@
# set(BUILD_GMOCK OFF CACHE BOOL "" FORCE)
# FetchContent_MakeAvailable(gtest)
-cmake_minimum_required(VERSION 2.8)
+cmake_minimum_required(VERSION 2.8...3.10)
set(DEBUG_FLAGS "-O3")
diff --git a/test/test_exporter_json.cpp b/test/test_exporter_json.cpp
index 7c46f3e..97a387a 100644
--- a/test/test_exporter_json.cpp
+++ b/test/test_exporter_json.cpp
@@ -188,7 +188,7 @@ TEST(export_test, cjson_export_with_fixed_tag_and_many_metrics_on_one_cube_of_co
int cube_id = fieldstat_register_cube(instance, TEST_TAG_SHARED1, 3, SAMPLING_MODE_COMPREHENSIVE, tag_list_num);
int id_counter = fieldstat_register_counter(instance, cube_id, "counter", 0);
int id_gauge = fieldstat_register_hll(instance, cube_id, "gauge", g_hll_standard->cfg.precision);
- int id_histogram = fieldstat_register_histogram(instance, cube_id, "histogram",
+ int id_histogram = fieldstat_register_hist(instance, cube_id, "histogram",
g_histogram_standard->lowest_discernible_value, g_histogram_standard->highest_trackable_value, g_histogram_standard->significant_figures);
Fieldstat_tag_list_wrapper *tags[tag_list_num];
@@ -202,7 +202,7 @@ TEST(export_test, cjson_export_with_fixed_tag_and_many_metrics_on_one_cube_of_co
fieldstat_counter_incrby(instance, cube_id, id_counter, cell_id, 1);
for (size_t i = 0; i < OPER_NUM; i++){
fieldstat_hll_add(instance, cube_id, id_gauge, cell_id, g_hll_standard_oper[i].c_str(), g_hll_standard_oper[i].length());
- fieldstat_histogram_record(instance, cube_id, id_histogram, cell_id, g_histogram_standard_oper[i]);
+ fieldstat_hist_record(instance, cube_id, id_histogram, cell_id, g_histogram_standard_oper[i]);
}
}
@@ -289,7 +289,7 @@ TEST(export_test, only_registered_but_not_added_export_null_with_global_tag)
int cube_id = fieldstat_register_cube(instance, TEST_TAG_SHARED1, 3, SAMPLING_MODE_COMPREHENSIVE, 3);
fieldstat_register_counter(instance, cube_id, "counter", 0);
fieldstat_register_hll(instance, cube_id, "gauge", g_hll_standard->cfg.precision);
- fieldstat_register_histogram(instance, cube_id, "histogram",
+ fieldstat_register_hist(instance, cube_id, "histogram",
g_histogram_standard->lowest_discernible_value, g_histogram_standard->highest_trackable_value, g_histogram_standard->significant_figures);
// add global tag
@@ -307,7 +307,7 @@ TEST(export_test, skip_two_empty_cube_and_export_last_one_with_global_tag)
int cube_id_2 = fieldstat_register_cube(instance, TEST_TAG_SHARED2, 3, SAMPLING_MODE_COMPREHENSIVE, 3);
(void)fieldstat_register_counter(instance, cube_id_2, "counter", false);
int cube_id_3 = fieldstat_register_cube(instance, TEST_TAG_SHARED3, 1, SAMPLING_MODE_COMPREHENSIVE, 3);
- int id_histogram = fieldstat_register_histogram(instance, cube_id_3, "histogram",
+ int id_histogram = fieldstat_register_hist(instance, cube_id_3, "histogram",
g_histogram_standard->lowest_discernible_value, g_histogram_standard->highest_trackable_value, g_histogram_standard->significant_figures);
const int tag_num = 1;
@@ -316,7 +316,7 @@ TEST(export_test, skip_two_empty_cube_and_export_last_one_with_global_tag)
const Fieldstat_tag_list_wrapper *the_tag = tags[0];
int cell_id = fieldstat_cube_add(instance, cube_id_3, the_tag->get_tag(), the_tag->get_tag_count(), 1);
for (size_t i = 0; i < OPER_NUM; i++){
- fieldstat_histogram_record(instance, cube_id_3, id_histogram, cell_id, g_histogram_standard_oper[i]);
+ fieldstat_hist_record(instance, cube_id_3, id_histogram, cell_id, g_histogram_standard_oper[i]);
}
// export test
diff --git a/test/test_metric_histogram.cpp b/test/test_metric_histogram.cpp
index 651f7a3..c0a0659 100644
--- a/test/test_metric_histogram.cpp
+++ b/test/test_metric_histogram.cpp
@@ -9,7 +9,7 @@ struct fieldstat *test_init_standard_instance_one_cube_one_metric_one_cell_hdr()
int cube_id = fieldstat_register_cube(instance, &TEST_SHARED_TAG, 1, SAMPLING_MODE_COMPREHENSIVE, 10);
EXPECT_EQ(cube_id, 0);
- int metric_id = fieldstat_register_histogram(instance, cube_id, "czz_test hdr metric", 1, 600000, 3);
+ int metric_id = fieldstat_register_hist(instance, cube_id, "czz_test hdr metric", 1, 600000, 3);
EXPECT_EQ(metric_id, 0);
int cell_id = fieldstat_cube_add(instance, cube_id, &TEST_TAG_STRING, 1, 1);
@@ -49,13 +49,13 @@ TEST(metric_test_histogram, simple_register_and_query)
{
struct fieldstat *instance = test_init_standard_instance_one_cube_one_metric_one_cell_hdr();
- fieldstat_histogram_record(instance, 0, 0, 0, 1234);
- fieldstat_histogram_record(instance, 0, 0, 0, 1234);
- fieldstat_histogram_record(instance, 0, 0, 0, 123);
+ fieldstat_hist_record(instance, 0, 0, 0, 1234);
+ fieldstat_hist_record(instance, 0, 0, 0, 1234);
+ fieldstat_hist_record(instance, 0, 0, 0, 123);
test_assert_standard_instance(instance);
- EXPECT_EQ(fieldstat_histogram_value_at_percentile(instance, 0, 0, 0, 50.0), 1234);
- EXPECT_EQ(fieldstat_histogram_count_le_value(instance, 0, 0, 0, 1000), 1);
+ EXPECT_EQ(fieldstat_hist_value_at_percentile(instance, 0, 0, 0, 50.0), 1234);
+ EXPECT_EQ(fieldstat_hist_count_le_value(instance, 0, 0, 0, 1000), 1);
fieldstat_free(instance);
}
@@ -63,9 +63,9 @@ TEST(metric_test_histogram, simple_register_and_query)
TEST(metric_test_histogram, serialize_and_merge)
{
struct fieldstat *instance = test_init_standard_instance_one_cube_one_metric_one_cell_hdr();
- fieldstat_histogram_record(instance, 0, 0, 0, 1234);
- fieldstat_histogram_record(instance, 0, 0, 0, 1234);
- fieldstat_histogram_record(instance, 0, 0, 0, 123);
+ fieldstat_hist_record(instance, 0, 0, 0, 1234);
+ fieldstat_hist_record(instance, 0, 0, 0, 1234);
+ fieldstat_hist_record(instance, 0, 0, 0, 123);
char *blob = NULL;
size_t blob_len = 0;
@@ -78,8 +78,8 @@ TEST(metric_test_histogram, serialize_and_merge)
// query
test_assert_standard_instance(instance_total);
- EXPECT_EQ(fieldstat_histogram_value_at_percentile(instance_total, 0, 0, 0, 50.0), 1234);
- EXPECT_EQ(fieldstat_histogram_count_le_value(instance, 0, 0, 0, 1000), 1);
+ EXPECT_EQ(fieldstat_hist_value_at_percentile(instance_total, 0, 0, 0, 50.0), 1234);
+ EXPECT_EQ(fieldstat_hist_count_le_value(instance, 0, 0, 0, 1000), 1);
fieldstat_free(instance);
fieldstat_free(instance_from_blob);
@@ -89,8 +89,8 @@ TEST(metric_test_histogram, serialize_and_merge)
TEST(metric_test_histogram, serialization_and_merge_twice_with_reset)
{
struct fieldstat *instance = test_init_standard_instance_one_cube_one_metric_one_cell_hdr();
- fieldstat_histogram_record(instance, 0, 0, 0, 1234);
- fieldstat_histogram_record(instance, 0, 0, 0, 123);
+ fieldstat_hist_record(instance, 0, 0, 0, 1234);
+ fieldstat_hist_record(instance, 0, 0, 0, 123);
char *blob = NULL;
size_t blob_len = 0;
@@ -104,7 +104,7 @@ TEST(metric_test_histogram, serialization_and_merge_twice_with_reset)
fieldstat_reset(instance);
int cell_id = fieldstat_cube_add(instance, 0, &TEST_TAG_STRING, 1, 1);
EXPECT_EQ(cell_id, 0);
- fieldstat_histogram_record(instance, 0, 0, 0, 1234);
+ fieldstat_hist_record(instance, 0, 0, 0, 1234);
fieldstat_serialize(instance, &blob, &blob_len);
instance_from_blob = fieldstat_deserialize(blob, blob_len);
@@ -112,8 +112,8 @@ TEST(metric_test_histogram, serialization_and_merge_twice_with_reset)
fieldstat_merge(instance_total, instance_from_blob);
test_assert_standard_instance(instance_total);
- EXPECT_EQ(fieldstat_histogram_value_at_percentile(instance_total, 0, 0, 0, 50.0), 1234);
- EXPECT_EQ(fieldstat_histogram_count_le_value(instance_total, 0, 0, 0, 1000), 1);
+ EXPECT_EQ(fieldstat_hist_value_at_percentile(instance_total, 0, 0, 0, 50.0), 1234);
+ EXPECT_EQ(fieldstat_hist_count_le_value(instance_total, 0, 0, 0, 1000), 1);
fieldstat_free(instance);
fieldstat_free(instance_from_blob);
@@ -126,9 +126,9 @@ TEST(metric_test_histogram, serialization_and_merge_twice_with_reset)
TEST(metric_test_histogram, serialize_with_b64_and_query)
{
struct fieldstat *instance = test_init_standard_instance_one_cube_one_metric_one_cell_hdr();
- fieldstat_histogram_record(instance, 0, 0, 0, 1234);
- fieldstat_histogram_record(instance, 0, 0, 0, 1234);
- fieldstat_histogram_record(instance, 0, 0, 0, 123);
+ fieldstat_hist_record(instance, 0, 0, 0, 1234);
+ fieldstat_hist_record(instance, 0, 0, 0, 1234);
+ fieldstat_hist_record(instance, 0, 0, 0, 123);
char *blob = NULL;
size_t blob_len = 0;
@@ -149,11 +149,11 @@ TEST(metric_test_histogram, add_or_set_with_wrong_cell_id_expecting_fail)
{
struct fieldstat *instance = fieldstat_new();
int cube_id = fieldstat_register_cube(instance, &TEST_TAG_INT_collided, 1, SAMPLING_MODE_COMPREHENSIVE, 10);
- int metric_id = fieldstat_register_histogram(instance, cube_id, "czz_test", 1, 600000, 3);
+ int metric_id = fieldstat_register_hist(instance, cube_id, "czz_test", 1, 600000, 3);
- int ret = fieldstat_histogram_record(instance, cube_id, metric_id, 1, 1234);
+ int ret = fieldstat_hist_record(instance, cube_id, metric_id, 1, 1234);
EXPECT_EQ(ret, -3);
- ret = fieldstat_histogram_record(instance, cube_id, metric_id, -1, 1234);
+ ret = fieldstat_hist_record(instance, cube_id, metric_id, -1, 1234);
EXPECT_EQ(ret, -3);
fieldstat_free(instance);
@@ -164,9 +164,9 @@ TEST(metric_test_histogram, add_with_wrong_cube_id_expecting_fail)
struct fieldstat *instance = fieldstat_new();
int cube_id = fieldstat_register_cube(instance, &TEST_TAG_INT_collided, 1, SAMPLING_MODE_COMPREHENSIVE, 10);
- int ret = fieldstat_histogram_record(instance, cube_id + 1, 0, 1, 1);
+ int ret = fieldstat_hist_record(instance, cube_id + 1, 0, 1, 1);
EXPECT_EQ(ret, -1);
- ret = fieldstat_histogram_record(instance, -1, 0, 1, 1);
+ ret = fieldstat_hist_record(instance, -1, 0, 1, 1);
EXPECT_EQ(ret, -1);
fieldstat_free(instance);
@@ -176,11 +176,11 @@ TEST(metric_test_histogram, add_with_wrong_metric_id_expecting_fail)
{
struct fieldstat *instance = fieldstat_new();
int cube_id = fieldstat_register_cube(instance, &TEST_TAG_INT_collided, 1, SAMPLING_MODE_COMPREHENSIVE, 10);
- int metric_id = fieldstat_register_histogram(instance, cube_id, "czz_test", 1, 600000, 3);
+ int metric_id = fieldstat_register_hist(instance, cube_id, "czz_test", 1, 600000, 3);
- int ret = fieldstat_histogram_record(instance, cube_id, metric_id + 1, 1, 1);
+ int ret = fieldstat_hist_record(instance, cube_id, metric_id + 1, 1, 1);
EXPECT_EQ(ret, -2);
- ret = fieldstat_histogram_record(instance, cube_id, -1, 1, 1);
+ ret = fieldstat_hist_record(instance, cube_id, -1, 1, 1);
EXPECT_EQ(ret, -2);
fieldstat_free(instance);
diff --git a/test/test_performance.cpp b/test/test_performance.cpp
index 00bf379..281a917 100644
--- a/test/test_performance.cpp
+++ b/test/test_performance.cpp
@@ -131,14 +131,14 @@ TEST(test_performance, merge_performance_one_instance_comprehensive_hll_empty_de
TEST(test_performance, merge_performance_one_instance_comprehensive_histogram_empty_dest)
{
- // int metric_id = fieldstat_register_histogram(instance, cube_id, "czz_test", 1, 100000, 1);
- // int ret = fieldstat_histogram_record(instance, cube_id, metric_id, cell_id, 1234);
+ // int metric_id = fieldstat_register_hist(instance, cube_id, "czz_test", 1, 100000, 1);
+ // int ret = fieldstat_hist_record(instance, cube_id, metric_id, cell_id, 1234);
auto metric_add_func = [](struct fieldstat *instance, int cube_id, int metric_id, int cell_id) {
- fieldstat_histogram_record(instance, cube_id, metric_id, cell_id, 1234);
+ fieldstat_hist_record(instance, cube_id, metric_id, cell_id, 1234);
};
auto metric_register_func = [](struct fieldstat *instance, int cube_id) {
- return fieldstat_register_histogram(instance, cube_id, "histogram metric", 1, 100000, 1);
+ return fieldstat_register_hist(instance, cube_id, "histogram metric", 1, 100000, 1);
};
clock_t elapsed = perform_merge_test(metric_add_func, metric_register_func, SAMPLING_MODE_COMPREHENSIVE, true);
@@ -195,14 +195,14 @@ TEST(test_performance, merge_performance_one_instance_comprehensive_hll_full_des
TEST(test_performance, merge_performance_one_instance_comprehensive_histogram_full_dest)
{
- // int metric_id = fieldstat_register_histogram(instance, cube_id, "czz_test", 1, 600000, 3);
- // int ret = fieldstat_histogram_record(instance, cube_id, metric_id, cell_id, 1234);
+ // int metric_id = fieldstat_register_hist(instance, cube_id, "czz_test", 1, 600000, 3);
+ // int ret = fieldstat_hist_record(instance, cube_id, metric_id, cell_id, 1234);
auto metric_add_func = [](struct fieldstat *instance, int cube_id, int metric_id, int cell_id) {
- fieldstat_histogram_record(instance, cube_id, metric_id, cell_id, 1234);
+ fieldstat_hist_record(instance, cube_id, metric_id, cell_id, 1234);
};
auto metric_register_func = [](struct fieldstat *instance, int cube_id) {
- return fieldstat_register_histogram(instance, cube_id, "histogram metric", 1, 100000, 1);
+ return fieldstat_register_hist(instance, cube_id, "histogram metric", 1, 100000, 1);
};
clock_t elapsed = perform_merge_test(metric_add_func, metric_register_func, SAMPLING_MODE_COMPREHENSIVE, false);
@@ -286,7 +286,7 @@ TEST(test_performance, performance_test_add_cells_histogram_record)
{
struct fieldstat *instance = fieldstat_new();
fieldstat_register_cube(instance, &TEST_TAG_INT_collided, 1, SAMPLING_MODE_COMPREHENSIVE, 10);
- fieldstat_register_histogram(instance, 0, "test", 1, 1000000, 3);
+ fieldstat_register_hist(instance, 0, "test", 1, 1000000, 3);
int cell_id = fieldstat_cube_add(instance, 0, &TEST_TAG_DOUBLE, 1, 1);
size_t test_num = 100000;
long long vals[test_num];
@@ -296,7 +296,7 @@ TEST(test_performance, performance_test_add_cells_histogram_record)
clock_t start = clock();
for (size_t i = 0; i < test_num; i++) {
- fieldstat_histogram_record(instance, 0, 0, cell_id, vals[i]);
+ fieldstat_hist_record(instance, 0, 0, cell_id, vals[i]);
}
clock_t end = clock();
double seconds = (double)(end - start) / test_num;