我有一个算法,运行在我的双核,3 GHz英特尔处理器平均250毫秒,我正在尝试优化它.目前,我有一个std :: nth_element调用,在150到300个元素的std :: vectors上调用大约6000次,平均需要50ms.我花了一些时间来优化我使用的比较器,它目前从矢量中查找两个双精度并且执行简单的<比较.比较器运行std :: nth_element的时间可以忽略不计.比较器的拷贝构造函数也很简单. 由于此调用目前占用了我的算法的20%的时间,并且由于时间大部分花费在我没有编写的nth_element的代码中(即不是比较器),我想知道是否有人知道一种方法使用SIMD或任何其他方法优化nth_element?我已经看到
some questions使用OpenCL和多个线程并行化std :: nth_element,但由于向量很短,我不确定从这种方法中可以获得多少好处,尽管我很乐意告诉我’我错了.
如果有SSE方法,我可以使用任何SSE指令(当前,我认为)SSE4.2.
谢谢!