Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(166)

Side by Side Diff: mojo/public/c/system/tests/core_perftest.cc

Issue 795593004: Update mojo sdk to rev cc531b32182099a5a034a99daff35ed5d38a61c8 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: More workarounds for MSVC Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « mojo/public/VERSION ('k') | mojo/public/c/test_support/test_support.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // This tests the performance of the C API. 5 // This tests the performance of the C API.
6 6
7 #include "mojo/public/c/system/core.h" 7 #include "mojo/public/c/system/core.h"
8 8
9 #include <assert.h> 9 #include <assert.h>
10 #include <stddef.h> 10 #include <stddef.h>
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 delete writers[i]; 205 delete writers[i];
206 } 206 }
207 writers.clear(); 207 writers.clear();
208 int64_t num_reads = 0; 208 int64_t num_reads = 0;
209 for (unsigned i = 0; i < num_readers; i++) { 209 for (unsigned i = 0; i < num_readers; i++) {
210 num_reads += readers[i]->num_reads(); 210 num_reads += readers[i]->num_reads();
211 delete readers[i]; 211 delete readers[i];
212 } 212 }
213 readers.clear(); 213 readers.clear();
214 214
215 char test_name[200]; 215 char sub_test_name[200];
216 sprintf(test_name, 216 sprintf(sub_test_name, "%uw_%ur_%ubytes", num_writers, num_readers,
217 "MessagePipe_Threaded_Writes_%uw_%ur_%ubytes",
218 num_writers,
219 num_readers,
220 static_cast<unsigned>(num_bytes)); 217 static_cast<unsigned>(num_bytes));
221 mojo::test::LogPerfResult( 218 mojo::test::LogPerfResult(
222 test_name, 219 "MessagePipe_Threaded_Writes", sub_test_name,
223 1000000.0 * static_cast<double>(num_writes) / (end_time - start_time), 220 1000000.0 * static_cast<double>(num_writes) / (end_time - start_time),
224 "writes/second"); 221 "writes/second");
225 sprintf(test_name,
226 "MessagePipe_Threaded_Reads_%uw_%ur_%ubytes",
227 num_writers,
228 num_readers,
229 static_cast<unsigned>(num_bytes));
230 mojo::test::LogPerfResult( 222 mojo::test::LogPerfResult(
231 test_name, 223 "MessagePipe_Threaded_Reads", sub_test_name,
232 1000000.0 * static_cast<double>(num_reads) / (end_time - start_time), 224 1000000.0 * static_cast<double>(num_reads) / (end_time - start_time),
233 "reads/second"); 225 "reads/second");
234 } 226 }
235 #endif // !defined(WIN32) 227 #endif // !defined(WIN32)
236 228
237 MojoHandle h0_; 229 MojoHandle h0_;
238 MojoHandle h1_; 230 MojoHandle h1_;
239 231
240 void* buffer_; 232 void* buffer_;
241 uint32_t num_bytes_; 233 uint32_t num_bytes_;
242 234
243 private: 235 private:
244 #if !defined(WIN32) 236 #if !defined(WIN32)
245 void Sleep(int64_t microseconds) { 237 void Sleep(int64_t microseconds) {
246 struct timespec req = { 238 struct timespec req = {
247 static_cast<time_t>(microseconds / 1000000), // Seconds. 239 static_cast<time_t>(microseconds / 1000000), // Seconds.
248 static_cast<long>(microseconds % 1000000) * 1000L // Nanoseconds. 240 static_cast<long>(microseconds % 1000000) * 1000L // Nanoseconds.
249 }; 241 };
250 int rv = nanosleep(&req, NULL); 242 int rv = nanosleep(&req, NULL);
251 MOJO_ALLOW_UNUSED_LOCAL(rv); 243 MOJO_ALLOW_UNUSED_LOCAL(rv);
252 assert(rv == 0); 244 assert(rv == 0);
253 } 245 }
254 #endif // !defined(WIN32) 246 #endif // !defined(WIN32)
255 247
256 MOJO_DISALLOW_COPY_AND_ASSIGN(CorePerftest); 248 MOJO_DISALLOW_COPY_AND_ASSIGN(CorePerftest);
257 }; 249 };
258 250
259 // A no-op test so we can compare performance. 251 // A no-op test so we can compare performance.
260 TEST_F(CorePerftest, NoOp) { 252 TEST_F(CorePerftest, NoOp) {
261 mojo::test::IterateAndReportPerf("NoOp", &CorePerftest::NoOp, this); 253 mojo::test::IterateAndReportPerf("Iterate_NoOp", nullptr, &CorePerftest::NoOp,
254 this);
262 } 255 }
263 256
264 TEST_F(CorePerftest, MessagePipe_CreateAndClose) { 257 TEST_F(CorePerftest, MessagePipe_CreateAndClose) {
265 mojo::test::IterateAndReportPerf("MessagePipe_CreateAndClose", 258 mojo::test::IterateAndReportPerf("MessagePipe_CreateAndClose", nullptr,
266 &CorePerftest::MessagePipe_CreateAndClose, 259 &CorePerftest::MessagePipe_CreateAndClose,
267 this); 260 this);
268 } 261 }
269 262
270 TEST_F(CorePerftest, MessagePipe_WriteAndRead) { 263 TEST_F(CorePerftest, MessagePipe_WriteAndRead) {
271 MojoResult result = MojoCreateMessagePipe(NULL, &h0_, &h1_); 264 MojoResult result = MojoCreateMessagePipe(NULL, &h0_, &h1_);
272 MOJO_ALLOW_UNUSED_LOCAL(result); 265 MOJO_ALLOW_UNUSED_LOCAL(result);
273 assert(result == MOJO_RESULT_OK); 266 assert(result == MOJO_RESULT_OK);
274 char buffer[10000] = {0}; 267 char buffer[10000] = {0};
275 buffer_ = buffer; 268 buffer_ = buffer;
276 num_bytes_ = 10u; 269 num_bytes_ = 10u;
277 mojo::test::IterateAndReportPerf("MessagePipe_WriteAndRead_10bytes", 270 mojo::test::IterateAndReportPerf("MessagePipe_WriteAndRead", "10bytes",
278 &CorePerftest::MessagePipe_WriteAndRead, 271 &CorePerftest::MessagePipe_WriteAndRead,
279 this); 272 this);
280 num_bytes_ = 100u; 273 num_bytes_ = 100u;
281 mojo::test::IterateAndReportPerf("MessagePipe_WriteAndRead_100bytes", 274 mojo::test::IterateAndReportPerf("MessagePipe_WriteAndRead", "100bytes",
282 &CorePerftest::MessagePipe_WriteAndRead, 275 &CorePerftest::MessagePipe_WriteAndRead,
283 this); 276 this);
284 num_bytes_ = 1000u; 277 num_bytes_ = 1000u;
285 mojo::test::IterateAndReportPerf("MessagePipe_WriteAndRead_1000bytes", 278 mojo::test::IterateAndReportPerf("MessagePipe_WriteAndRead", "1000bytes",
286 &CorePerftest::MessagePipe_WriteAndRead, 279 &CorePerftest::MessagePipe_WriteAndRead,
287 this); 280 this);
288 num_bytes_ = 10000u; 281 num_bytes_ = 10000u;
289 mojo::test::IterateAndReportPerf("MessagePipe_WriteAndRead_10000bytes", 282 mojo::test::IterateAndReportPerf("MessagePipe_WriteAndRead", "10000bytes",
290 &CorePerftest::MessagePipe_WriteAndRead, 283 &CorePerftest::MessagePipe_WriteAndRead,
291 this); 284 this);
292 result = MojoClose(h0_); 285 result = MojoClose(h0_);
293 assert(result == MOJO_RESULT_OK); 286 assert(result == MOJO_RESULT_OK);
294 result = MojoClose(h1_); 287 result = MojoClose(h1_);
295 assert(result == MOJO_RESULT_OK); 288 assert(result == MOJO_RESULT_OK);
296 } 289 }
297 290
298 TEST_F(CorePerftest, MessagePipe_EmptyRead) { 291 TEST_F(CorePerftest, MessagePipe_EmptyRead) {
299 MojoResult result = MojoCreateMessagePipe(NULL, &h0_, &h1_); 292 MojoResult result = MojoCreateMessagePipe(NULL, &h0_, &h1_);
300 MOJO_ALLOW_UNUSED_LOCAL(result); 293 MOJO_ALLOW_UNUSED_LOCAL(result);
301 assert(result == MOJO_RESULT_OK); 294 assert(result == MOJO_RESULT_OK);
302 mojo::test::IterateAndReportPerf( 295 mojo::test::IterateAndReportPerf("MessagePipe_EmptyRead", nullptr,
303 "MessagePipe_EmptyRead", &CorePerftest::MessagePipe_EmptyRead, this); 296 &CorePerftest::MessagePipe_EmptyRead, this);
304 result = MojoClose(h0_); 297 result = MojoClose(h0_);
305 assert(result == MOJO_RESULT_OK); 298 assert(result == MOJO_RESULT_OK);
306 result = MojoClose(h1_); 299 result = MojoClose(h1_);
307 assert(result == MOJO_RESULT_OK); 300 assert(result == MOJO_RESULT_OK);
308 } 301 }
309 302
310 #if !defined(WIN32) 303 #if !defined(WIN32)
311 TEST_F(CorePerftest, MessagePipe_Threaded) { 304 TEST_F(CorePerftest, MessagePipe_Threaded) {
312 DoMessagePipeThreadedTest(1u, 1u, 100u); 305 DoMessagePipeThreadedTest(1u, 1u, 100u);
313 DoMessagePipeThreadedTest(2u, 2u, 100u); 306 DoMessagePipeThreadedTest(2u, 2u, 100u);
314 DoMessagePipeThreadedTest(3u, 3u, 100u); 307 DoMessagePipeThreadedTest(3u, 3u, 100u);
315 DoMessagePipeThreadedTest(10u, 10u, 100u); 308 DoMessagePipeThreadedTest(10u, 10u, 100u);
316 DoMessagePipeThreadedTest(10u, 1u, 100u); 309 DoMessagePipeThreadedTest(10u, 1u, 100u);
317 DoMessagePipeThreadedTest(1u, 10u, 100u); 310 DoMessagePipeThreadedTest(1u, 10u, 100u);
318 311
319 // For comparison of overhead: 312 // For comparison of overhead:
320 DoMessagePipeThreadedTest(1u, 1u, 10u); 313 DoMessagePipeThreadedTest(1u, 1u, 10u);
321 // 100 was done above. 314 // 100 was done above.
322 DoMessagePipeThreadedTest(1u, 1u, 1000u); 315 DoMessagePipeThreadedTest(1u, 1u, 1000u);
323 DoMessagePipeThreadedTest(1u, 1u, 10000u); 316 DoMessagePipeThreadedTest(1u, 1u, 10000u);
324 317
325 DoMessagePipeThreadedTest(3u, 3u, 10u); 318 DoMessagePipeThreadedTest(3u, 3u, 10u);
326 // 100 was done above. 319 // 100 was done above.
327 DoMessagePipeThreadedTest(3u, 3u, 1000u); 320 DoMessagePipeThreadedTest(3u, 3u, 1000u);
328 DoMessagePipeThreadedTest(3u, 3u, 10000u); 321 DoMessagePipeThreadedTest(3u, 3u, 10000u);
329 } 322 }
330 #endif // !defined(WIN32) 323 #endif // !defined(WIN32)
331 324
332 } // namespace 325 } // namespace
OLDNEW
« no previous file with comments | « mojo/public/VERSION ('k') | mojo/public/c/test_support/test_support.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698