【发布时间】:2018-12-09 06:55:45
【问题描述】:
我用 C++ 编写了一个有 10 个线程的项目。一个线程将数据加载到内存中(写入缓冲区),另外 9 个线程同时读取缓冲区并将数据存储到 SQLite 数据库中,所有线程都使用互斥锁进行处理以避免冲突。
现在我需要评估这个项目的性能,例如每个线程的成功时间、内存使用情况等。我该如何在 c++ 环境中进行呢?我使用 Valgrind 来检查这些。但我认为它不起作用。
这是我使用 Valgrind 运行的代码,
valgrind --tool=memcheck --leak-check=yes ./executable
它会给出这样的消息,
callers=20 --track-fds=yes ./monerosci
==24262== Memcheck, a memory error detector
==24262== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==24262== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==24262== Command: ./monerosci
==24262==
valgrind: m_syswrap/syswrap-linux.c:5361
(vgSysWrap_linux_sys_fcntl_before): Assertion 'Unimplemented
functionality' failed.
valgrind: valgrind
host stacktrace:
==24262== at 0x38083F48: ??? (in /usr/lib/valgrind/memcheck-amd64-linux)
==24262== by 0x38084064: ??? (in /usr/lib/valgrind/memcheck-amd64-linux)
==24262== by 0x380841F1: ??? (in /usr/lib/valgrind/memcheck-amd64-linux)
==24262== by 0x380FB399: ??? (in /usr/lib/valgrind/memcheck-amd64-linux)
==24262== by 0x380D6234: ??? (in /usr/lib/valgrind/memcheck-amd64-linux)
==24262== by 0x380D2D2A: ??? (in /usr/lib/valgrind/memcheck-amd64-linux)
==24262== by 0x380D43DE: ??? (in /usr/lib/valgrind/memcheck-amd64-linux)
==24262== by 0x380E3946: ??? (in /usr/lib/valgrind/memcheck-amd64-linux)
如何在 C++ 中测试项目的性能?
【问题讨论】:
标签: c++ multithreading performance-testing valgrind