C#
fancybit
这个作者很懒,什么都没留下…
展开
-
递归转迭代实操记录
针对那些经典的像素游戏设计的自动切图工具里用到种子填充算法的实现。 一开始是用递归实现的,后来遇到一些头像之类的比较大一点的图素,运行的时候经常占满C#默认的1M线程栈内存而崩溃。尝试使用各种多线方式改造并没有成功,于是干脆改成迭代形式,创建一个Stack自己完全精确控制其中的数据操作。 这里截取一段改成迭代后的代码,这是窗体的事件处理用cs代码。因为只是个小工具,没有完全把界面和逻辑分离。 ...原创 2019-08-10 12:19:23 · 234 阅读 · 0 评论 -
C#通过PInvoke调用c++函数的备忘录
目前知道的情况被调用的C/C++函数只能是全局函数 不能调用类中的成员方法 被调用的C函数必须使用extern “C“包含,保证采用的导出函数名生成规则和.NET一致 函数调用约定通常使用WINAPI也就是__stdcall,.net默认也是__stdcall .net可以和c++同时用cdecl调用约定,这样可以支持可变参数个数 c函数必须使用__declspec(dllexport)前...原创 2019-08-23 18:39:44 · 256 阅读 · 0 评论 -
[转载]C# 托管内存与非托管内存之间的转换
C# 托管内存与非托管内存之间的转换 c#有自己的内存回收机制,所以在c#中我们可以只new,不用关心怎样delete,c#使用gc来清理内存,这部分内存就是managed memory,大部分时候我们工作于c#环境中,都是在使用托管内存,然而c#毕竟运行在c++之上,有的时候,(比如可能我们需要引入一些第三方的c++或native代码的库,在Unity3d开发中很常见)我们需要直接在c#中操纵...转载 2019-08-21 09:24:39 · 223 阅读 · 0 评论 -
.net core SIMD范例分析
单指令多数据流(SIMD)是CPU基本运算之外为了提高并行处理多条数据效率的技术,常用于多媒体处理如视频,3D模拟的计算。实现方式不同品牌的CPU各有自己的指令集,如SSE MMX 3DNOW等。 C#开发.net core软件的过程中也可以让编译器自动采用这些SIMD指令集进行代码优化,测试了一下在我的AMD 锐龙7 2700X上对于整数加法处理可以提高10倍的效率。 下面是我自己写的例子:...原创 2019-08-16 14:39:12 · 452 阅读 · 0 评论