怎么创造着属于一个属于自己的网站呢www;px555;net 13030159151

起因 最近在用go写一个raytracing光线追踪器光线追踪针对每一个光线进行跟踪并计算最终结果,且每个光线之间互不干扰非常适合利用并行计算进行计算时间的优化。 问题 然而當我将计算并行化之后却发现并行计算的时间居然远远超出单线程的计算时间十分怪异。一开始认为是开启太多goroutine导致调度负载过高而拖慢计算排查后发现显然不是。 遂利用go自带的pprof工具采集cpu信息进行分析发现sync.(*Mutex).lockSlow消耗了大量的时间,在排除了本身程序架构上的锁问题之后那么,是什么导致如此长时间的锁消耗呢 解决 经过研究,最终发现问题出在使用的rand.Float64()函数上math/rand包中的函数默认使用了一个全局锁,在并发加高频率调用的情况下全局锁损耗非常大。 解决方法也比较简单对每个并发的goroutine,单独生成一个rand就行了


欢迎关注我们的微信公众号,烸天学习Go知识

入群交流(和以上内容无关):加入Go大咖交流群或添加微信:muxilin131420 备注:入群;或加QQ群:

我要回帖

更多关于 创造着属于 的文章

 

随机推荐