C#中关于浮点数运算效率的问题
用C#做了一个实时显示温度曲线的程序,运行发现随着时间的推移CPU占用率最高竟然能够达到50%,甚是奇怪,究其原因发现有两个地方:其中的数据运算全部是浮点数的运算,另一个可能就是程序结构写的不好。如果还有一个原因的话可能就是.net的垃圾回收机制。
浮点数的运算是肯定要修改的,这个也是致命的,估计cpu的都耗在这里了。但是还有一个现象就是一开始cpu占用是2%左右,非常小的,而运行到半个小时竟然能够达到50%,这个问题似乎跟内存泄露有共同之处,但.net拒绝内存泄漏。像这样的程序能够用,但长期运行下去是肯定不行的,望大侠指点迷津。
浮点数的运算是肯定要修改的,这个也是致命的,估计cpu的都耗在这里了。但是还有一个现象就是一开始cpu占用是2%左右,非常小的,而运行到半个小时竟然能够达到50%,这个问题似乎跟内存泄露有共同之处,但.net拒绝内存泄漏。像这样的程序能够用,但长期运行下去是肯定不行的,望大侠指点迷津。
...全文
请发表友善的回复…
发表回复
jerry_zhang99 2009-10-25
- 打赏
- 举报
是有点问题,我发现他把所有的点都存在了个list中,随之时间的增加,点越来越多,内存消耗越来越大,然后计算量查找,添加页都效率越来越低是吗,哈哈,我已经成功解决了,谢谢大家关心,
superzxf 2009-10-22
- 打赏
- 举报
如果一开始占用不高,一段时间后占用高了,检查画图算法是否有问题
jerry_zhang99 2009-10-19
- 打赏
- 举报
[Quote=引用 5 楼 youfayoutian 的回复:]
我觉得问题是出在画图显示曲线上
应该是在内存整幅画好后,再显示在屏幕上
如果是每画个一点就立即在屏幕上显示一点, 会慢得让你难以置信.
当然,现在的计算计都比较牛了
[/Quote]
恩,这确实是个大问题,谢谢
我觉得问题是出在画图显示曲线上
应该是在内存整幅画好后,再显示在屏幕上
如果是每画个一点就立即在屏幕上显示一点, 会慢得让你难以置信.
当然,现在的计算计都比较牛了
[/Quote]
恩,这确实是个大问题,谢谢
医手 2009-10-16
- 打赏
- 举报
我觉得问题是出在画图显示曲线上
应该是在内存整幅画好后,再显示在屏幕上
如果是每画个一点就立即在屏幕上显示一点, 会慢得让你难以置信.
当然,现在的计算计都比较牛了
应该是在内存整幅画好后,再显示在屏幕上
如果是每画个一点就立即在屏幕上显示一点, 会慢得让你难以置信.
当然,现在的计算计都比较牛了
Hide1984 2009-10-16
- 打赏
- 举报
[Quote=引用 2 楼 jerry_zhang99 的回复:]
CPU的强大就在于非大数据量的浮点运算,这句话不是很懂啊,您的意思是,cpu做一定量的浮点数运算是很合适的是吗?不要太拘泥于一些浮点数的运算是这样吗。cpu占用率高的原因不是因为浮点数的运算而是算法上不太合适,是这样理解吗
[/Quote]
是的~
CPU的强大就在于非大数据量的浮点运算,这句话不是很懂啊,您的意思是,cpu做一定量的浮点数运算是很合适的是吗?不要太拘泥于一些浮点数的运算是这样吗。cpu占用率高的原因不是因为浮点数的运算而是算法上不太合适,是这样理解吗
[/Quote]
是的~
Hide1984 2009-10-15
- 打赏
- 举报
CPU的强大就在于非大数据量的浮点运算。
如果做大数据量的整形运算,那么GPU是最好的选择。
楼主优化一下算法吧~
如果做大数据量的整形运算,那么GPU是最好的选择。
楼主优化一下算法吧~
jerry_zhang99 2009-10-15
- 打赏
- 举报
CPU的强大就在于非大数据量的浮点运算,这句话不是很懂啊,您的意思是,cpu做一定量的浮点数运算是很合适的是吗?不要太拘泥于一些浮点数的运算是这样吗。cpu占用率高的原因不是因为浮点数的运算而是算法上不太合适,是这样理解吗