【发布时间】:2017-12-29 22:35:00
【问题描述】:
我在 Visual Studio 2013 中以 RELEASE 模式运行 HM-16.15 编码器。HM-16.15 编码器是一个非常大的 C++ 程序(200k 行代码)。我有两个时间(T1 和 T2)。程序 T = T1 + T2 花费的总时间。
当我分别在 64 位模式和 32 位模式下构建和调试程序时。 64位模式与32位相比所用时间如下
- T1(64bit) = T1(32bit) x 0.34 接近
- T2(64bit) = T2(32bit) x 0.78 接近
据我所知,T1(64bit) 应该大于或等于 T1(32bit) x 0.5。但是 T1 是怎么发生的呢?
【问题讨论】:
-
HM-16.15 编码器是 HEVC(高效视频编码)的代码,它将原始视频文件编码为 yuv 格式
-
为什么你认为这总是正确的:“T1(64bit) 应该大于或等于 T1(32bit) x 0.5”?
-
64 位目标通常更适应各种事情,例如 64 位算术和访问大量内存,但区别是 远 比简单的常数因子,可以很容易地朝相反的方向发展。我不知道这个库,但解释可能很简单,因为代码已经针对 64 位目标进行了优化,在 32 位构建中使用的很少关心甚至未优化的后备函数。相反,64 位软件,尤其是指针繁重的代码,通常会使用更多的内存,并且可能很容易最终耗尽缓存。
标签: c++ visual-studio visual-studio-2013 hevc h.265