c speed comparison - Serbipunk/notes GitHub Wiki
set memory
result vector.assign
== memset
> cv::Mat.setTo
> std::fill
{ // memset() Average: 0.21363 [ms] Std: 0.0478739 [ms]
SCOPE_TIMER
m_mouth.Mask.resize(4 * nSize);
m_mouth.MaskCh0.resize(nSize);
m_mouth.MaskCh1.resize(nSize);
std::memset(m_mouth.Mask.data(), 0, 4 * nSize);
std::memset(m_mouth.MaskCh0.data(), 0, nSize);
std::memset(m_mouth.Mask.data(), 0, nSize);
}
{ // assign() Average: 0.209134 [ms] Std: 0.0441519 [ms]
SCOPE_TIMER
m_mouth.Mask.assign(4 * nSize, u8zero);
m_mouth.MaskCh0.assign(nSize, u8zero);
m_mouth.MaskCh1.assign(nSize, u8zero);
}
{ // opencv setTo() Average: 0.490142 [ms] Std: 0.0838222 [ms]
SCOPE_TIMER
m_mouth.Mask.resize(4 * nSize);
m_mouth.MaskCh0.resize(nSize);
m_mouth.MaskCh1.resize(nSize);
cv::Mat mask = cv::Mat(m_mouth.m_nMaskHeight, m_mouth.m_nMaskWidth, CV_8UC4, m_mouth.Mask.data());
mask.setTo(0);
cv::Mat maskCh0 = cv::Mat(m_mouth.m_nMaskHeight, m_mouth.m_nMaskWidth, CV_8UC1, m_mouth.MaskCh0.data());
maskCh0.setTo(0);
cv::Mat maskCh1 = cv::Mat(m_mouth.m_nMaskHeight, m_mouth.m_nMaskWidth, CV_8UC1, m_mouth.MaskCh1.data());
maskCh1.setTo(0);
}
{ // Average: 1.15699 [ms] Std: 0.0209771 [ms]
SCOPE_TIMER
m_mouth.Mask.resize(4 * nSize);
m_mouth.MaskCh0.resize(nSize);
m_mouth.MaskCh1.resize(nSize);
std::fill(m_mouth.Mask.begin(), m_mouth.Mask.end(), u8zero);
std::fill(m_mouth.MaskCh0.begin(), m_mouth.MaskCh0.end(), u8zero);
std::fill(m_mouth.MaskCh1.begin(), m_mouth.MaskCh1.end(), u8zero);
}