Skip to content

Commit 792a4da

Browse files
committed
Fix all conversion warnings in benchmarks, tests, and API
1 parent fcd7cb2 commit 792a4da

4 files changed

Lines changed: 29 additions & 25 deletions

File tree

api/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ void VectorVaultServer::handle_query(const httplib::Request& req, httplib::Respo
128128
}
129129

130130
response["latency_us"] = duration.count();
131-
response["latency_ms"] = duration.count() / 1000.0;
131+
response["latency_ms"] = static_cast<double>(duration.count()) / 1000.0;
132132

133133
res.set_content(response.dump(), "application/json");
134134

bench/bench_main.cpp

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ std::vector<double> compute_percentiles(std::vector<double> values,
6363
std::vector<double> results;
6464

6565
for (double p : percentiles) {
66-
size_t idx = static_cast<size_t>(p * values.size());
66+
size_t idx = static_cast<size_t>(p * static_cast<double>(values.size()));
6767
if (idx >= values.size())
6868
idx = values.size() - 1;
6969
results.push_back(values[idx]);
@@ -92,7 +92,7 @@ void run_build_benchmark(const BenchmarkConfig& config) {
9292
params.metric = DistanceMetric::L2;
9393

9494
HNSWIndex index(config.d, params);
95-
index.reserve(config.N);
95+
index.reserve(static_cast<size_t>(config.N));
9696

9797
auto start = std::chrono::high_resolution_clock::now();
9898

@@ -107,7 +107,7 @@ void run_build_benchmark(const BenchmarkConfig& config) {
107107
auto end = std::chrono::high_resolution_clock::now();
108108
auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
109109

110-
double build_time_s = duration.count() / 1000.0;
110+
double build_time_s = static_cast<double>(duration.count()) / 1000.0;
111111
double throughput = config.N / build_time_s;
112112

113113
std::cout << "Build time: " << build_time_s << " seconds" << std::endl;
@@ -152,11 +152,12 @@ void run_query_benchmark(const BenchmarkConfig& config) {
152152

153153
// Compute ground truth for recall calculation (sample)
154154
std::cout << "Computing ground truth (first 100 queries)..." << std::endl;
155-
std::vector<std::vector<int>> ground_truth(std::min(100, config.Q));
155+
std::vector<std::vector<int>> ground_truth(static_cast<size_t>(std::min(100, config.Q)));
156156
for (int i = 0; i < std::min(100, config.Q); ++i) {
157-
auto results = brute_force_search(queries[i], vectors, config.k, params.metric);
157+
auto results =
158+
brute_force_search(queries[static_cast<size_t>(i)], vectors, config.k, params.metric);
158159
for (const auto& r : results) {
159-
ground_truth[i].push_back(r.id);
160+
ground_truth[static_cast<size_t>(i)].push_back(r.id);
160161
}
161162
}
162163

@@ -166,36 +167,37 @@ void run_query_benchmark(const BenchmarkConfig& config) {
166167

167168
for (int ef : config.ef_search_values) {
168169
std::vector<double> latencies;
169-
latencies.reserve(config.Q);
170+
latencies.reserve(static_cast<size_t>(config.Q));
170171

171172
std::vector<float> recalls;
172173

173174
for (int i = 0; i < config.Q; ++i) {
174175
auto start = std::chrono::high_resolution_clock::now();
175-
auto results = index.search(queries[i], config.k, ef);
176+
auto results = index.search(queries[static_cast<size_t>(i)], config.k, ef);
176177
auto end = std::chrono::high_resolution_clock::now();
177178

178179
auto duration = std::chrono::duration_cast<std::chrono::microseconds>(end - start);
179-
latencies.push_back(duration.count() / 1000.0); // Convert to ms
180+
latencies.push_back(static_cast<double>(duration.count()) / 1000.0); // Convert to ms
180181

181182
// Compute recall for first 100 queries
182183
if (i < std::min(100, config.Q)) {
183184
std::vector<int> result_ids;
184185
for (const auto& r : results) {
185186
result_ids.push_back(r.id);
186187
}
187-
float recall = compute_recall(ground_truth[i], result_ids, config.k);
188+
float recall =
189+
compute_recall(ground_truth[static_cast<size_t>(i)], result_ids, config.k);
188190
recalls.push_back(recall);
189191
}
190192
}
191193

192194
auto percentiles = compute_percentiles(latencies, {0.5, 0.95, 0.99});
193195
float avg_recall = recalls.empty() ? 0.0f
194196
: std::accumulate(recalls.begin(), recalls.end(), 0.0f) /
195-
recalls.size();
197+
static_cast<float>(recalls.size());
196198

197-
double avg_latency_s =
198-
std::accumulate(latencies.begin(), latencies.end(), 0.0) / (latencies.size() * 1000.0);
199+
double avg_latency_s = std::accumulate(latencies.begin(), latencies.end(), 0.0) /
200+
(static_cast<double>(latencies.size()) * 1000.0);
199201
double qps = 1.0 / avg_latency_s;
200202

201203
std::cout << ef << "," << percentiles[0] << "," << percentiles[1] << "," << percentiles[2]

bench/gen_data.cpp

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ void generate_random_vectors(std::vector<std::vector<float>>& vectors, int n, in
1010
std::mt19937 rng(seed);
1111
std::normal_distribution<float> dist(0.0f, 1.0f);
1212

13-
vectors.resize(n);
14-
for (int i = 0; i < n; ++i) {
15-
vectors[i].resize(dim);
16-
for (int j = 0; j < dim; ++j) {
13+
vectors.resize(static_cast<size_t>(n));
14+
for (size_t i = 0; i < static_cast<size_t>(n); ++i) {
15+
vectors[i].resize(static_cast<size_t>(dim));
16+
for (size_t j = 0; j < static_cast<size_t>(dim); ++j) {
1717
vectors[i][j] = dist(rng);
1818
}
1919
}
@@ -49,7 +49,8 @@ bool save_vectors_binary(const std::string& path, const std::vector<std::vector<
4949
file.write(reinterpret_cast<const char*>(&dim), sizeof(dim));
5050

5151
for (const auto& vec : vectors) {
52-
file.write(reinterpret_cast<const char*>(vec.data()), dim * sizeof(float));
52+
file.write(reinterpret_cast<const char*>(vec.data()),
53+
static_cast<std::streamsize>(dim) * static_cast<std::streamsize>(sizeof(float)));
5354
}
5455

5556
return file.good();
@@ -64,10 +65,11 @@ bool load_vectors_binary(const std::string& path, std::vector<std::vector<float>
6465
file.read(reinterpret_cast<char*>(&n), sizeof(n));
6566
file.read(reinterpret_cast<char*>(&dim), sizeof(dim));
6667

67-
vectors.resize(n);
68-
for (int i = 0; i < n; ++i) {
69-
vectors[i].resize(dim);
70-
file.read(reinterpret_cast<char*>(vectors[i].data()), dim * sizeof(float));
68+
vectors.resize(static_cast<size_t>(n));
69+
for (size_t i = 0; i < static_cast<size_t>(n); ++i) {
70+
vectors[i].resize(static_cast<size_t>(dim));
71+
file.read(reinterpret_cast<char*>(vectors[i].data()),
72+
static_cast<std::streamsize>(dim) * static_cast<std::streamsize>(sizeof(float)));
7173
}
7274

7375
return file.good();

tests/test_distance.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ class DistanceTest : public ::testing::Test {
1515

1616
// Generate random test vectors
1717
for (int d : test_dims) {
18-
std::vector<float> a(d), b(d);
19-
for (int i = 0; i < d; ++i) {
18+
std::vector<float> a(static_cast<size_t>(d)), b(static_cast<size_t>(d));
19+
for (size_t i = 0; i < static_cast<size_t>(d); ++i) {
2020
a[i] = dist(rng);
2121
b[i] = dist(rng);
2222
}

0 commit comments

Comments
 (0)