t**g 发帖数: 1164 | 1 1.假如有millions个objs,new的话效率太慢,如何快速分配内存和初始化
2.有没有比memset更高效的办法赋值
3.用array的话,如何对这million个obj调用带参数的ctor
我用A a[100]={A(b)}他说错了
事后我猜use vector instead (which allow customized ctor calling), and then
transfer it to array?
4.linux下如何查找程序某个process详细信息
我回答ps和top,他说不对
谢谢! |
d**a 发帖数: 84 | 2
这个自己管理内存吧。搞个pool然后override new /delete
如果一定需要改变那段mem的值,我脚着是不是dma一段比用一个个指令去改快些。当然
这个前提得dma src得有这需要的初始值。
另一个方向就是利用特殊的指令,可以对一段内存进行快速赋值/复制。我记得x86有这
个指令。我觉得memset的实现会用这些指令的。
要看这个array如何声明的。如果是动态的,可以用placement new,先分配内存,然后
在初始化。这样初始化就可以控制,一般可用stl 里的uninitialized_fill来调用一个
copy ctor。
如果是静态数组,除了列出初始值外,不知道有啥别的办法。
他说你不对,我觉得故意找茬。好的itnerviewer至少会说不全吧,然后问有没有办法
看到更多的东西。
我觉得可以看/proc/里的东西,这里啥都用,想要啥就有啥。
【在 t**g 的大作中提到】 : 1.假如有millions个objs,new的话效率太慢,如何快速分配内存和初始化 : 2.有没有比memset更高效的办法赋值 : 3.用array的话,如何对这million个obj调用带参数的ctor : 我用A a[100]={A(b)}他说错了 : 事后我猜use vector instead (which allow customized ctor calling), and then : transfer it to array? : 4.linux下如何查找程序某个process详细信息 : 我回答ps和top,他说不对 : 谢谢!
|
t**g 发帖数: 1164 | 3 thx!
【在 d**a 的大作中提到】 : : 这个自己管理内存吧。搞个pool然后override new /delete : 如果一定需要改变那段mem的值,我脚着是不是dma一段比用一个个指令去改快些。当然 : 这个前提得dma src得有这需要的初始值。 : 另一个方向就是利用特殊的指令,可以对一段内存进行快速赋值/复制。我记得x86有这 : 个指令。我觉得memset的实现会用这些指令的。 : 要看这个array如何声明的。如果是动态的,可以用placement new,先分配内存,然后 : 在初始化。这样初始化就可以控制,一般可用stl 里的uninitialized_fill来调用一个 : copy ctor。 : 如果是静态数组,除了列出初始值外,不知道有啥别的办法。
|
s*****i 发帖数: 355 | 4 最后一个,ps -L
【在 d**a 的大作中提到】 : : 这个自己管理内存吧。搞个pool然后override new /delete : 如果一定需要改变那段mem的值,我脚着是不是dma一段比用一个个指令去改快些。当然 : 这个前提得dma src得有这需要的初始值。 : 另一个方向就是利用特殊的指令,可以对一段内存进行快速赋值/复制。我记得x86有这 : 个指令。我觉得memset的实现会用这些指令的。 : 要看这个array如何声明的。如果是动态的,可以用placement new,先分配内存,然后 : 在初始化。这样初始化就可以控制,一般可用stl 里的uninitialized_fill来调用一个 : copy ctor。 : 如果是静态数组,除了列出初始值外,不知道有啥别的办法。
|
P**********0 发帖数: 412 | |
w**********8 发帖数: 121 | 6 super. I agree with you.
【在 d**a 的大作中提到】 : : 这个自己管理内存吧。搞个pool然后override new /delete : 如果一定需要改变那段mem的值,我脚着是不是dma一段比用一个个指令去改快些。当然 : 这个前提得dma src得有这需要的初始值。 : 另一个方向就是利用特殊的指令,可以对一段内存进行快速赋值/复制。我记得x86有这 : 个指令。我觉得memset的实现会用这些指令的。 : 要看这个array如何声明的。如果是动态的,可以用placement new,先分配内存,然后 : 在初始化。这样初始化就可以控制,一般可用stl 里的uninitialized_fill来调用一个 : copy ctor。 : 如果是静态数组,除了列出初始值外,不知道有啥别的办法。
|
l*y 发帖数: 21010 | 7 第二个,有一种快速给数组赋值的算法,速度比线性快,回头我有时间帮你找个链接
【在 t**g 的大作中提到】 : 1.假如有millions个objs,new的话效率太慢,如何快速分配内存和初始化 : 2.有没有比memset更高效的办法赋值 : 3.用array的话,如何对这million个obj调用带参数的ctor : 我用A a[100]={A(b)}他说错了 : 事后我猜use vector instead (which allow customized ctor calling), and then : transfer it to array? : 4.linux下如何查找程序某个process详细信息 : 我回答ps和top,他说不对 : 谢谢!
|
x***y 发帖数: 633 | 8 what's the algorithm's name? thanks a lot...
【在 l*y 的大作中提到】 : 第二个,有一种快速给数组赋值的算法,速度比线性快,回头我有时间帮你找个链接
|
l*y 发帖数: 21010 | 9 找到了
http://eli.thegreenplace.net/2008/08/23/initializing-an-array-in-constant-time/
constant time
【在 x***y 的大作中提到】 : what's the algorithm's name? thanks a lot...
|
k***e 发帖数: 556 | 10 that seems the same to the method mentioned in "programming pearls" 1st
chapt
【在 l*y 的大作中提到】 : 找到了 : http://eli.thegreenplace.net/2008/08/23/initializing-an-array-in-constant-time/ : constant time
|
l*y 发帖数: 21010 | 11 可能是,我没看过。。
【在 k***e 的大作中提到】 : that seems the same to the method mentioned in "programming pearls" 1st : chapt
|
d**a 发帖数: 84 | 12 这个就是那个pearls上的办法。
这个得问清楚interviewer,是不是要确实把那段内存的值改变,
或者只要达到类似的效果就行。
【在 l*y 的大作中提到】 : 可能是,我没看过。。
|