第90章 七千万次的小石头(6 / 9)
重到cpu的每一个时钟周期都在被无意义的管理逻辑消耗。
江临现在要做的,不是去推翻高德纳在《电脑程式设计艺术》里写下的经典排序理论,也不是发明什么震惊世界的新算法。
他只是需要一套固定手势。
五张试卷。
看第一张和第二张。
谁大谁在前面,该换就换。
再看第三张和第四张。
该换就换。
几步极其固定的比较之后,顺序自然就出来了。
不问多余的类型问题。
不打开多余的內存分配流程。
不为那根本不存在的一百万张试卷准备任何冗余的边界检查工具。
没有数据相关的循环,没有运行时临时选择路径。
比较顺序在编译前就被钉死,剩下的只是固定位置之间的比较与交换。
只处理这五个位置的数字。
这就是在高性能计算领域里,针对极其明確边界的小规模数据,进行优化的核心奥义。
凌晨一点二十,万籟俱寂,江临在新建的c语言扩展文件里,写下了第一版函数的签名。
函数名很丑,甚至不像一个优雅算法库里的东西。
rank5_fixed_v0。
它不试图排序世界上一切数组,只处理五个float64因子暴露值,五个有效性標记,以及五个原始位置编號。
输出的也不是一个漂亮的新数组,而是一组业务排名和一组mask。
它就像一把在废土车间里,为了拧某种特定型號引擎底盘上的特定螺丝,而被强行把手柄焊弯的怪异扳手。
但江临现在需要的,正是这种专一暴力的扳手。
第一版写完,江临並没有急著直接替换到python 审计主流程里去。
作为在废土里见识过一个小数点错误导致整个证明功亏一簣的倖存者,他对替换底层逻辑有著病態的严谨。
他先做baseline。
原流程输出什么,新函数就必须输出一模一样的东西。
在量化金融的数据里,现实永远比理论骯脏。
无重复值(理想状態)。
重复值(两只股票因子得分完全一样)。 ↑返回顶部↑
江临现在要做的,不是去推翻高德纳在《电脑程式设计艺术》里写下的经典排序理论,也不是发明什么震惊世界的新算法。
他只是需要一套固定手势。
五张试卷。
看第一张和第二张。
谁大谁在前面,该换就换。
再看第三张和第四张。
该换就换。
几步极其固定的比较之后,顺序自然就出来了。
不问多余的类型问题。
不打开多余的內存分配流程。
不为那根本不存在的一百万张试卷准备任何冗余的边界检查工具。
没有数据相关的循环,没有运行时临时选择路径。
比较顺序在编译前就被钉死,剩下的只是固定位置之间的比较与交换。
只处理这五个位置的数字。
这就是在高性能计算领域里,针对极其明確边界的小规模数据,进行优化的核心奥义。
凌晨一点二十,万籟俱寂,江临在新建的c语言扩展文件里,写下了第一版函数的签名。
函数名很丑,甚至不像一个优雅算法库里的东西。
rank5_fixed_v0。
它不试图排序世界上一切数组,只处理五个float64因子暴露值,五个有效性標记,以及五个原始位置编號。
输出的也不是一个漂亮的新数组,而是一组业务排名和一组mask。
它就像一把在废土车间里,为了拧某种特定型號引擎底盘上的特定螺丝,而被强行把手柄焊弯的怪异扳手。
但江临现在需要的,正是这种专一暴力的扳手。
第一版写完,江临並没有急著直接替换到python 审计主流程里去。
作为在废土里见识过一个小数点错误导致整个证明功亏一簣的倖存者,他对替换底层逻辑有著病態的严谨。
他先做baseline。
原流程输出什么,新函数就必须输出一模一样的东西。
在量化金融的数据里,现实永远比理论骯脏。
无重复值(理想状態)。
重复值(两只股票因子得分完全一样)。 ↑返回顶部↑