zyl910

优化技巧、硬件体系、图像处理、图形学、游戏编程、国际化与文本信息处理。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

随笔分类 -  B40 Math_数学

摘要:将复数乘法改造为SIMD向量算法,是稍微有一些的难度的。首个难点是需要重新调整元素的位置,才能满足复数乘法公式。而“调整元素的位置”与内存中数据布局有关,不同办法的性能不同。还需考虑优化内存访问等细节。 最近知乎有个 帖子 讨论了该话题,且 hez2010 给出了修正后的基于Avx指令集 Horiz 阅读全文
posted @ 2024-12-28 00:56 zyl910 阅读(52) 评论(0) 推荐(0) 编辑

摘要:一、测试结果汇总 将前面的测试结果进行汇总,整理为表格(单位是毫秒,数值越小越好)—— 测试f0_iff1_minf2_negf3_sarf4_mmxf5_sseVC6 on 32bit2016206371967237.525.7VC6 on 64bit2028207571868737.125.3VC2010(32) on 32bit17932112512437VC2010(32) on 64bit17162106514437VC2010(64) on 64bit16231997421328C#2010(any) on 32bit192221472471559C#2010(any) on... 阅读全文
posted @ 2012-04-13 17:20 zyl910 阅读(1813) 评论(2) 推荐(0) 编辑

摘要:前面我们测试了C系列语言,验证了位掩码算法的确实性能不错。那么对于Basic系列语言,该算法的效率怎样呢?于是本文对此进行探讨。 VB.Net与C#一样,也是由.Net虚拟机执行的,没有多大的测试价值。所以我决定测试VB6。一、移植要点 VB6的功能与C系列语言差很多。很多地方需要换另一种方法去实现,甚至不能实现。 要点有——1.VB6不支持控制台程序,只支持窗口程序。所以我们的测试程序得修改为窗口程序。2.VB6不支持指针,所以依靠数组。幸好现在的操作比较简单,用数组的性能损失不大。3.VB6没有带符号移位运算法,所以无法实现f3_sar函数。4.VB6和C#一样不支持宏,所以得手... 阅读全文
posted @ 2012-03-30 16:49 zyl910 阅读(3607) 评论(0) 推荐(0) 编辑

摘要:前面我们测试了C语言这样纯编译型语言。那么对于像C#这样由虚拟机执行的语言,“位掩码代替分支”法是否也有效果呢?于是本文对此进行探讨。一、移植要点 C#的语法与C语言很相像,多数代码可以直接用,但要注意以下几点。1.1 unsafe——不安全上下文 C#虽然支持指针,但必须在unsafe——不安全上下文 中才能使用。 要使用unsafe,必须先配置项目属性,允许不安全代码——1.项目->属性,打开项目的属性页。2.点击左侧“生成”,切换到“生成”页。3.点击上侧的“配置”组合框,选择“所有配置(C)”。4.勾选“常规”中的“允许不安全代码(F)”。5.点击工具栏上的“保存”按钮。 ... 阅读全文
posted @ 2012-03-29 17:08 zyl910 阅读(1416) 评论(0) 推荐(0) 编辑

摘要:.Net中,字节序(Byte Order)相关处理的类有——System.BitConverter。GetBytes等方法。本机字节序(IsLittleEndian属性)。(程序集:mscorlib)System.IO.BinaryReader。ReadInt32等方法。小端字节序。(程序集:mscorlib)System.IO.BinaryWriter。Write 方法。小端字节序。(程序集:mscorlib)System.Net.IPAddress。HostToNetworkOrder等方法。本机字节序与网络字节序的转换。(程序集:System) 为了彻底处理字节序问题,我决定将这些... 阅读全文
posted @ 2011-10-07 23:57 zyl910 阅读(1028) 评论(0) 推荐(0) 编辑