我有一个正在下载多个文件的应用程序(Qt,但这并不是很重要),我想通知用户有关进度。 C ++应用程序在另一台计算机上运行,并且进度报告通过网络发送(protocoll在这里无关紧要)。我不想为每个数据接收通过网络发送消息,而只在定义的间隔中发送消息,例如每5%(所以0%,5%,10%)。
基本上我现在就这样:
void Downloader::OnUpdateDownloadProgress(int downloaded_bytes)
{
m_files_downloaded_size += downloaded_bytes;
int perc_download = (int) ((m_files_downloaded_size / m_files_total_size)*100);
if(m_percentage_buffer > LocalConfig::getDownloadReportSteps() || m_files_downloaded_size == m_files_total_size){
emit sigDownloadProgress(DOWNLOAD_PROGRESS, perc_download);
m_percentage_buffer = 0;
}else{
m_percentage_buffer += (downloaded_bytes / m_files_total_size) * 100;
}
}
这意味着对于每次触发该插槽的数据接收,我都需要执行:
更大的比较,加法,除法,乘法
我知道我至少可以通过将浮点数存储在设置中并与之进行比较来略过乘法。除此之外,还有什么其他方法可以提高性能,还是我在第一次尝试实施时就做好了?