V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  zhiqiang  ›  全部回复第 5 页 / 共 9 页
回复总数  174
1  2  3  4  5  6  7  8  9  
2019-01-08 09:30:54 +08:00
回复了 zhiqiang 创建的主题 问与答 tensorflow predict 的 C++接口比 Python 速度还慢?
@luxinxin 我做了十万次然后对比的时间。。。
2019-01-08 08:58:28 +08:00
回复了 zhiqiang 创建的主题 问与答 tensorflow predict 的 C++接口比 Python 速度还慢?
@luxinxin 你之前有类似的测试吗?

我只统计了 tensorflow 的 predict 函数调用时间,tensorflow 启动和数据准备时间都被排除了。除非在 predict 函数内部的启动,这个也无法排除。

batch size 一样。模型也一样。数据也一样。
2018-12-24 13:11:48 +08:00
回复了 zhiqiang 创建的主题 问与答 这里有 bloghost 的人吗
@rexcelia 你能联系上他们吗?
2018-12-14 17:48:47 +08:00
回复了 zhiqiang 创建的主题 C C++ delete 对象但内存没被回收?
@wutiantong 哈哈,可是这烂摊子都是我写的啊。

感觉项目一大,各种坑会不断冒出来。见得多就好了。
2018-12-14 14:19:31 +08:00
回复了 zhiqiang 创建的主题 C C++ delete 对象但内存没被回收?
虽然还没搞清楚确切的原因,但很可能跟分配了大量细碎的内存片段有关。我打算把 circular_buffer 都用内存池管理起来。
2018-12-14 09:30:04 +08:00
回复了 zhiqiang 创建的主题 C C++ delete 对象但内存没被回收?
查看了 boost::circular_buffer 的源代码,它用的 allocator 就是 std::vector::allocator,但跟 std::vector 不一样在于,circular_buffer 不会对内存初始化。

内存没用不占用可能是操作系统搞的,虽然分配了地址,但不用就不分配实际物理地址,导致不会实际占用物理内存。

delete 不回收内存的原因还是没搞清楚。
2018-12-14 08:58:21 +08:00
回复了 zhiqiang 创建的主题 C C++ delete 对象但内存没被回收?
再补充一下我试验的结果:

我确定 boost::circular_buffer 这个东西的内存实现和常规的不太一样,具体表现在分配的空间如果没有实际用上,那么并不会占用太多的内存。有点类似于按需扩容,但我看 boost 的文档,这东西应该是在初始化一次性分配内存的。

The circular_buffer only allocates memory when created, when the capacity is adjusted explicitly, or as necessary to accommodate resizing or assign operations.

但我也没试验出 delete 之后的内存不释放的情况。可能跟上面发现的特性有关。
2018-12-14 08:47:23 +08:00
回复了 zhiqiang 创建的主题 C C++ delete 对象但内存没被回收?
@codehz ABI 兼容性应该没问题。那个 so 也是我自己编译的,同一系统同样环境。

再说能提示下,怎么检查 ABI 兼容性问题吗?
2018-12-13 15:29:58 +08:00
回复了 zhiqiang 创建的主题 C C++ delete 对象但内存没被回收?
@wwqgtxx 能简化复现的 bug,不会贴到这里麻烦网友们。
2018-12-13 14:35:46 +08:00
回复了 zhiqiang 创建的主题 C C++ delete 对象但内存没被回收?
@GeruzoniAnsasu 我多挂载的 so 也是我写的,里面很简单。唯一有问题的,可能在这个 so 也链接 boost circular_buffer 以及我那个类 T 的实现。

现在看来可能是 circular_buffer 的 allocate/deallocate 可能有问题。
2018-12-13 14:19:03 +08:00
回复了 zhiqiang 创建的主题 C C++ delete 对象但内存没被回收?
@wutiantong 在扇贝 C++写得多不?

我上面写的有一定简化。

原始对象其实是一个 T,里面有两个成员都是 vector of cirular_buffer of int。

我 new 和 delete 的都是 T。
2018-12-13 12:26:31 +08:00
回复了 zhiqiang 创建的主题 C C++ delete 对象但内存没被回收?
@willm 重载是不可能的,我没写过这么底层的东西,要么就是 boost 里面的实现有重载。

我怀疑跟 runtime link 有关系。
2018-12-05 09:07:37 +08:00
回复了 autumn2018 创建的主题 程序员 为什么 Python 里没有 printf ?
我就喜欢在 C++里用 printf。std::cout 又丑又难用。

std::cout 号称更安全一点,但只要自己注意点,printf 也没啥,再说现在编译器也能识别出大部分不安全的情况。
2018-12-04 16:53:24 +08:00
回复了 zhiqiang 创建的主题 C C++什么情况下会出现类 static 成员析构错误?
@lcdtyph so 文件是 dlopen 打开的,不是编译时链接。链接时只链接了.a 文件。

现在看 dlopen 的 runtime link 有些难以琢磨的东西。
2018-12-04 16:50:53 +08:00
回复了 zhiqiang 创建的主题 C C++什么情况下会出现类 static 成员析构错误?
@lcdtyph 你是最接近答案的人 :)
2018-12-04 16:50:18 +08:00
回复了 zhiqiang 创建的主题 C C++什么情况下会出现类 static 成员析构错误?
@lcdtyph 我已经解决了,把那些 static 成员标记为 hidden 即可。
2018-12-04 16:45:02 +08:00
回复了 zhiqiang 创建的主题 C C++什么情况下会出现类 static 成员析构错误?
@lcdtyph 这不行的。不链编译通不过。
2018-12-04 16:08:05 +08:00
回复了 zhiqiang 创建的主题 C C++什么情况下会出现类 static 成员析构错误?
2018-12-04 14:51:04 +08:00
回复了 zhiqiang 创建的主题 C C++什么情况下会出现类 static 成员析构错误?
@hitmanx 我没加这个。不过我试了下加这个编译参数,还是会运行出错。

我用 nm 命令检查了符号,发现原始没出问题的代码,exe 程序里没有`Token`类的实现,所有 so 文件在运行时都使用各自文件里的实现。

但出问题的代码里,exe 程序里有 Token 类的实现,so 文件在运行时直接用了主程序里的实现。

其中 so 文件我没有重新编译过,所以出问题是发现在运行而不是编译时的函数链接上。
2018-12-04 13:33:41 +08:00
回复了 zhiqiang 创建的主题 C C++什么情况下会出现类 static 成员析构错误?
@geelaw Token 只是其中一个类,这里面其实有很多东西,甚至有好几个.a,不太方便都做成.so再说用.so 就不能链接内联优化了。
1  2  3  4  5  6  7  8  9  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2755 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 17ms · UTC 06:34 · PVG 14:34 · LAX 22:34 · JFK 01:34
Developed with CodeLauncher
♥ Do have faith in what you're doing.