第90章 七千万次的小石头(7 / 9)

投票推荐 加入书签 留言反馈

  缺失值(nan,某只股票当天停牌没有数据)。
  极端值(infinity)。
  负值。
  相等值且需要保持原相对顺序(稳定排序要求)。
  每一种情况,都必须对齐。
  有重复值时,原来在数组里谁在前面,现在排序后也必须谁在前面。
  遇到nan缺失值时,量化的规则不是数学上的把它当最大或者把它当最小,而是必须按照项目预设的规则,將其单独剔除並打上mask_nan標籤,剩下的数继续排。
  这並非纯粹数学定义上的排序,带著强烈业务属性的金融审计项目里的排名规则。
  两者绝不能混为一谈。
  凌晨两点半,江临揉了揉发酸的眼睛。
  第一版v0跑过了包含两万个边缘测试用例的单元测试。
  结果全对。
  速度有提升,但並不大,大概只快了15%。
  第一版只是为了验证这个强耦合的方向是走得通的。
  江临並不意外。
  他重新打开c 代码。
  开始真正的榨乾性能。
  刪掉所有不必要的状態判断。
  把仅有的一点循环彻底展开,变成直线型的直线代码。
  把可能会出现的各种数据类型的可能性彻底焊死,限定在这个项目里真正会输入进来的內存布局。
  凌晨三点十八,第二版出来了。
  他没有把这个函数暴露成一个给python循环逐次调用的小玩具。
  那样七千万次跨语言调用本身就会成为新的灾难。
  他真正写的是一个批处理入口。
  一次性接收连续內存里的数百万个五元组,在c层內部跑完整个固定排序网络,再把排名矩阵吐回给python。
  再次跑测试。
  结果一致。
  速度提升到了30%。
  但这还不够。
  江临的眉头微微皱起,他感觉到代码里还有多余的脂肪。 ↑返回顶部↑

章节目录