由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Quant版 - 如何高效overload binary operation
相关主题
MS 'Strategist' 电话面试问一个c++的问题
本科学过C++,现在想brush up 求推荐英文教材我C++ yellow belt
How to overloading a matrix classexcel里负号运算符优先级高于^??!!
有没有讲c++和VBA结合起来编程的书啊?纠结一个Offer,大家帮忙给看看
请教: c++ 重载问题ok, not so short phone interview
[合集] C++ 里面 long 怎么 进行 bitwise AND[合集] ok, not so short phone interview
如果你interview一个quant,你期望他C++知道哪些?[合集] find a missing value(c++)
[合集] C++ interview questionanother Goldman interview question
相关话题的讨论汇总
话题: wrapper话题: overload话题: 分配话题: 赋值话题: binary
进入Quant版参与讨论
1 (共1页)
E***e
发帖数: 3430
1
被问到要给一个linear algebra library做adapter/wrapper
做最简单的运算重载比如加法
该library做c=a+b的时候是不分配内存的
直接把a+b的结果写入已经分配好的c
如果做了wrapper好像难免要先分配一块内存存储a+b
再赋值给c
这么一分配再一赋值降低了好几倍的效率
请问应该用什么办法做这个adapter/wrapper?
s******y
发帖数: 416
2
没太明白。
为啥wrapper需要多分配一次内存?

【在 E***e 的大作中提到】
: 被问到要给一个linear algebra library做adapter/wrapper
: 做最简单的运算重载比如加法
: 该library做c=a+b的时候是不分配内存的
: 直接把a+b的结果写入已经分配好的c
: 如果做了wrapper好像难免要先分配一块内存存储a+b
: 再赋值给c
: 这么一分配再一赋值降低了好几倍的效率
: 请问应该用什么办法做这个adapter/wrapper?

E***e
发帖数: 3430
3
比如c=a+b
我能想到的最好办法是a+b存进一个临时变量然后赋值给c
临时变量就多出来一次内存分配
但是library能直接把a+b的值直接存进c里完全没有内存分配
非常羡慕
我不是cs出身编程基本功不好
谢谢指导

【在 s******y 的大作中提到】
: 没太明白。
: 为啥wrapper需要多分配一次内存?

s******y
发帖数: 416
4
把a+b地址给c就行了。smart pointer,不会泄露的。

【在 E***e 的大作中提到】
: 比如c=a+b
: 我能想到的最好办法是a+b存进一个临时变量然后赋值给c
: 临时变量就多出来一次内存分配
: 但是library能直接把a+b的值直接存进c里完全没有内存分配
: 非常羡慕
: 我不是cs出身编程基本功不好
: 谢谢指导

E***e
发帖数: 3430
5
这样a+b不还是开了一块内存?
理想情况是这样:
void PlusAssign(&c, &a, &b)
{
c=a;
c+=b;
}
完全没分配内存
但是这样不知道怎么做成加法重载

【在 s******y 的大作中提到】
: 把a+b地址给c就行了。smart pointer,不会泄露的。
s******y
发帖数: 416
6
但是c不用分配。

【在 E***e 的大作中提到】
: 这样a+b不还是开了一块内存?
: 理想情况是这样:
: void PlusAssign(&c, &a, &b)
: {
: c=a;
: c+=b;
: }
: 完全没分配内存
: 但是这样不知道怎么做成加法重载

E***e
发帖数: 3430
7
不分配c容易实现
但是要match library
a+b也不能分配

【在 s******y 的大作中提到】
: 但是c不用分配。
w********h
发帖数: 48
8
用+=。非要用+的话,a+b返回一个新class的对象,包含该加法运算的meta info,重载
此class赋值到矩阵的运算符,在其中真正做加法。
E***e
发帖数: 3430
9
谢谢
C++11的move assignment是不是也可以考虑?

【在 w********h 的大作中提到】
: 用+=。非要用+的话,a+b返回一个新class的对象,包含该加法运算的meta info,重载
: 此class赋值到矩阵的运算符,在其中真正做加法。

N******K
发帖数: 10202
10
参考eigen armodillo 方案 比较复杂
问这个问题 就是变态

【在 E***e 的大作中提到】
: 被问到要给一个linear algebra library做adapter/wrapper
: 做最简单的运算重载比如加法
: 该library做c=a+b的时候是不分配内存的
: 直接把a+b的结果写入已经分配好的c
: 如果做了wrapper好像难免要先分配一块内存存储a+b
: 再赋值给c
: 这么一分配再一赋值降低了好几倍的效率
: 请问应该用什么办法做这个adapter/wrapper?

E***e
发帖数: 3430
11
搜了几天发现有现成方案:expression template
问问题的人估计也就是想听到这两个词没准备深究,算不上太变态了

【在 N******K 的大作中提到】
: 参考eigen armodillo 方案 比较复杂
: 问这个问题 就是变态

1 (共1页)
进入Quant版参与讨论
相关主题
another Goldman interview question请教: c++ 重载问题
国内一年级的数学题-zz[合集] C++ 里面 long 怎么 进行 bitwise AND
这句code什么意思?如果你interview一个quant,你期望他C++知道哪些?
关于placement new[合集] C++ interview question
MS 'Strategist' 电话面试问一个c++的问题
本科学过C++,现在想brush up 求推荐英文教材我C++ yellow belt
How to overloading a matrix classexcel里负号运算符优先级高于^??!!
有没有讲c++和VBA结合起来编程的书啊?纠结一个Offer,大家帮忙给看看
相关话题的讨论汇总
话题: wrapper话题: overload话题: 分配话题: 赋值话题: binary