c++
文章平均质量分 60
zsyddl2
这个作者很懒,什么都没留下…
展开
-
sse mmx 等优化,intel icc编译器会自动优化 cpp
windows x64 优化了半天,使用 intel编译器 对比其cpp 和 汇编的速度差异,怎么都只有一倍速度。奇怪了。我的代码使用 sse-256 bit指令优化计算。 然后想到看看编译后的汇编指令对比,为什么速度上不去。调试对比发现 intel对cpp自动产生了 sse-128bit 指令优化。难怪我的代码使用只能达到其2倍或者1.x倍的速度。 编写 ms编译器的cpp代码对比,果然,优化后的速度就明显了达到理论的 4倍或者8倍。这倒是得到一个提醒,就是很多循环计算,都可以借...原创 2021-08-29 21:08:28 · 357 阅读 · 0 评论 -
c++ 从头写高效仿函数(function)
在程序设计中,很多时候需要回调函数.传统c回调函数,和c++的关系并不友好,需要定义静态函数,再转接给对象.这样子虽然代码不多.但是每次都需要绕个圈子,不够直爽. c++ 新标准以后(>11?)std自带function,可以使用这个类实现任意类型函数作为回调函数.倒是非常方便了.但是几次调试后发现,封装的比较多,一次调用至少需要5-10次函数调用(未具体计...原创 2019-11-19 16:23:50 · 427 阅读 · 0 评论 -
unreal component 的坑 内存使用为何很高?
当使用多个 component的情况.每添加一个,内存最终会增加1M 左右的 内存. 即使只是一个 正方体box. 这么耗内存的软件太可怕了. 岂不是1k个方盒子对象,那电脑直接就可能爆了? 不过话说回来,还得要解决下才好. 1)使用的是develop 版本的unreal 所以不知道和这个有关否. 待定. 2)直接定位代码找到消耗内存的地方. 1 经过反复对比定位.定位到此...原创 2018-07-13 15:30:29 · 1010 阅读 · 0 评论 -
win7 x64 vs2015 c++ 使用 tensorflow - 2 使用 facenet 模型
简单调用 facenet模型,并对比欧式距离.使用了opencv做人脸检测.其中一些参数暂时写死了.目前的效果一般般.因为 opencv对人脸的不同姿态检测并不是太准.(暂时依赖于Qt的QString 和 QImage ) 1/ create: Scope m_root = Scope::NewRootScope(); Status status = NewSess...原创 2018-07-25 16:09:46 · 1972 阅读 · 1 评论 -
openCL 低延迟,频繁调用实验方案
openCl低延迟,频繁调用实验 1 opencl 可以利用gpu对计算进行加速.gpu对比cpu的特点,并行的核多,同步操作并行计算效率高(逻辑步调完全一致).串行逻辑比如cpu. 可以加速的算法: 1) 大量的数学运算.比如矩阵的加减乘除. 其中数据类型为float的单精度/半精度吞吐量最大.int不如float. 2) 可并行的排序/搜索.这是...原创 2018-08-09 17:18:30 · 1121 阅读 · 2 评论 -
cuda 封装接口这么锉
用nv显卡做计算. 不得不用cuda,因为老黄的对opencl对待的很不友好. 没想到其亲生的 cuda比opencl接口low了一大截. 简单使用第一印象: 居然主要函数接口,没提供句柄参数, 需要使用某个显卡,只能setDevice(index), 然后操作.然后重新setDevice才可以调用其他显卡. 看到这样的操作顿时晕倒, 做显卡那么牛,就不能认真点做接口...难道又外包给...原创 2018-08-17 15:59:25 · 353 阅读 · 0 评论 -
c++ 11 实现简单 signal slot
c++ 11以前要实现 signal slot 非常麻烦,需要重写很多代码。之前使用 libsig++ 后来发现 这代码中与qt 的slots emit等名称冲突。虽然可以解决,但是比较麻烦。所以 就使用 新的 c++特性,自行实现了简单的 signal 类。 目前实现比较简单。没有太多考虑异常或者智能情况。 这里面包含了结合线程使用,编程异步信号的 部分代码.需要屏蔽掉才能正常使用....原创 2018-10-31 11:14:57 · 2014 阅读 · 0 评论 -
linux/android c++ list size()大坑
list 是常用的类,对于标准 std库,感觉不会有大的坑或者大问题。结果想多了。最近把win上的程序跨平台到 android上,发现会崩溃在list 的size() 函数。这个就奇怪了,正常逻辑理解size函数还能崩溃?(虽然是多线程,但是在不影响逻辑的情况下,没有对size调用加锁,是为了效率考虑)。看看堆栈,我的天啦,居然size函数是每次从头到尾遍历!!!,所以未加锁的情况下,多线程...原创 2019-07-18 15:17:42 · 701 阅读 · 0 评论 -
安卓守护程序爬坑经历
最近开发一个android电视上运行的软件,由于需要长时间运行,所以需要保证稳定性,以及在意外情况下能自动重启运行。要直接让应用程序本身保证无bug还是有一定难度,一般情况是外加守护程序(daemon)或者叫做看门口。以往的应用在pc端的应用中就是这么使用的,能达到需要的长期运行的效果。同样的方法也就确定在android上这么使用了。确定方案开始干。 刚开始想着平移w...原创 2019-08-26 16:01:21 · 271 阅读 · 0 评论 -
BIM Revit 模型导出 2
前面说了revit的简单导出,这种方法为导出整个revit为一个模型文件.通常这种模型文件非常巨大.1实际3d使用过程中, 这种巨大的3d模型文件,会有很多问题:1)3d引擎无法根据可视范围对渲染对象进行裁剪(选择渲染与不渲染)2)在网络传输过程中,需要完整传输模型文件方可显示.3)对大的场景建筑对象,比如一栋楼,无法按需加载,只能将整个大楼的顶点,材质等数据完全加载. 加载会非常缓慢.而且不消耗...原创 2018-07-10 16:06:06 · 4231 阅读 · 2 评论 -
unreal c++ 动态创建 component
1/ USceneComponent *pRootComponent = CreateDefaultSubobject<USceneComponent>(name/*TEXT("RootComponent")*/); RootComponent = pRootComponent;这个方式创建 Component 只能在 actor的无参数构造函数中.之后也可以在此构造函数中创建...原创 2018-07-10 15:37:36 · 4056 阅读 · 0 评论 -
win7 x64 vs2015 c++ 使用 tensorflow - 1 简单神经网络训练,预测
这是一个有一个中间层 一个输出层的神经网络demo. 输入数据为 1维数据.中间层10个神经元 输出成10个神经元. 其中一些都是临时为了测试修改的, 数据也是写固定了.后面补充可以动态输入数据的情况. 完整工程网盘路径: 附带了 tensorflow lib 所以很大. 链接:https://pan.baidu.com/s/1fwP7-D1-Usz1Ec5cY-RaYg 密码:0hlb...原创 2018-07-09 16:40:02 · 1197 阅读 · 1 评论 -
QT QThread 线程间消息队列
QT 提供了良好的开发包;线程间也可以实现消息队列的方式 类似 windows PostThreadMessage的工作方式。同时比普通队列简单的很多。 但是需要稍微做特殊处理: 1. CMyThread 继承 QTHread, 同时在构造函数中 使用 moveToThread(this). 这可以让发往 CMyThread 实例的信号,最终调用CMyThread的slot,并且是在CMy...原创 2018-06-08 22:15:14 · 11339 阅读 · 1 评论 -
Unreal 导出dll 嵌入到程序 (嵌入Qt 程序)
unreal 默认是 无法嵌入到程序中作为一个dll模块的。想嵌入,需要做一些修改调整。再上一篇文章说过这个主要修改步骤。这里说第一方面: unreal 导出 dll工程: 1、通过ue editor 建立一个 ue工程。(UeSdk) 2、调用vs 打开项目, 修改编译选项。 UeSdk.target.cs 文件 : public uesdkTarget(Ta...原创 2018-06-15 22:23:38 · 2966 阅读 · 6 评论 -
软件C++、C研发如此稀缺
最近公司 做bim 新成立的创业公司。c++大约开到20k-25k。竟然找不到两个合适的中级研发人员。很多工作5年-10年的人,实际技术都不到3年的真实水平。最多算个初级到中级之间的。 如何对能力分级呢? 初级:给一些难度不大的简单软件模块和接口,可以基本完成,偶遇到问题,需要指导解决。软件基础知识都了解,比如语言本身,线程,网络,操作系统等 中级:可以对大模块进行模块设计分功,带...原创 2018-06-16 23:33:53 · 3769 阅读 · 0 评论 -
大道至简-轻松使用 c++ 设计软件
c++ 设计软件,其实简单,和c一样简单。不过现实中c++看起来很难,特别是stl boost的源码,将c++的表面难度看起来提升了几个数量级。这是要作死的节奏。 轻松使用c++应该是这样的:抛开语言,划分模块,c是如何去划分,那就如何划分模块。再使用c++的类代替c的模块/结构体. 简单描述为 用c 去思考设计,用c++去编码实现(记忆中在某文章也看到这个观点,抱歉记不住引用的出处)...原创 2018-06-17 14:22:27 · 1307 阅读 · 0 评论 -
python 的打脸笑话
python 强制 table对齐,以及函数过程不使用{}进行自然标记。看到网上说其发明人曰:这样是为了设计为像自然语言一样阅读程序。 那好,像自然语言一样阅读你的程序,table就自然了?{}这符号是不够自然语言, 那你python里面 哪些() ; ""; = 这些符号就像自然语言了?这有没有啪啪的响声。 还是引入 c/c++脚本,看着至少不如python那么变态。...原创 2018-06-17 14:34:01 · 519 阅读 · 0 评论 -
llvm clang JIT 程序 5.0.2
windows vs2015 based:网上各种 jit demo已经是无效了。至少在3.9 以后的版本都是无法直接使用的。实际使用情况是这样的: 使用llvm自带HowToUseJITdemo修改: 代码如下,并需要添加lib: ..\..\Release\lib\LLVMIRReader.lib..\..\Release\lib\LLVMAsmParser.lib..\..\Rel...原创 2018-06-11 10:06:52 · 774 阅读 · 0 评论 -
win7 x64 vs2015 c++ 使用 tensorflow
(这里不想使用"深度学习",因为这个名字就是炒作,而且这两年的神经网络带来的性能,并不是因为深.) 最近的需求需要预研下人脸识别/人工智能. 虽然目前各种人脸识别/图像识别/人工智能,都只是处于人工智障阶段,但是不可否认还是有一些实际价值.所以需要选择一个方案,在项目中使用起来,带来价值,方可推动继续研究. 前面文章说了.caffe2 是个巨大的坑,现在还不适合跳入. 在短...原创 2018-07-09 12:30:18 · 2883 阅读 · 0 评论 -
c/c++ 做脚本 动态 跨平台 方案 llvm-clang
llvm-clang 牛的不要不要的,不了解的可以 google下。 前几年都思考c/c++如果能做脚本运、使用jit方式 编译运行,那c c++可以像java 或者其他脚本语言一样,实现轻松夸平台,;同时能通过记事本修改代码就可以动态修改 添加软件功能。或者反过来说,java、c# python等可以 通过这种jit等方式实现native代码的效率。 最近项目中需要用到动态策略,而这种...原创 2018-06-08 21:55:13 · 1980 阅读 · 0 评论