这期内容当中小编将会给大家带来有关C++ 程序如何做优化,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
第一步,找出耗时的点。原来的程序输出日志用的cout,没有附带时间,不能通过日志发现耗时的点。为了找出性能关键点,第一步是改进log,在输出中加上时间。写了一个Log类,替换掉cout,程序的输出中就带上时间了:
#include "../include/Log.hpp"
#include
#include
#include
#include
using namespace std;
namespace tlanyan {
string Log::datetimeFormat = "%F %T";
Log::Log()
{
}
void Log::info(const char* message) {
cout << getCurrentTime() << " [info] " << message << endl;
}
void Log::debug(const char* message) {
#if DEBUG
cout << getCurrentTime() << " [debug] " << message;
#endif;
}
const char* Log::getCurrentTime()
{
//locale::global(locale("zh_CN.utf8"));
time_t t = time(NULL);
char mbstr[512];
if (strftime(mbstr, sizeof(mbstr), Log::datetimeFormat.c_str(), localtime(&t))) {
return mbstr;
}
cerr << "获取或格式化时间错误!" << endl;
exit(1);
}
Log::~Log()
{
}
}
// 调用示例:
Log::info("program begins...");
通过查看Log,定位到了耗时长的过程。
优化前后的结果对比:中等数据规模下,耗时从8'43"降到3'25";大数据量下,耗时从4h48'44"降到1h59'21"(注:使用自己的机器测试,CPU主频3.46GHz,比中科院和天河二号集群的CPU主频都要高,所以耗时短)。从数据看出,效果还是很明显的。
上述就是小编为大家分享的C++ 程序如何做优化了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。