日期:2014-05-18 浏览次数:20743 次
Thread.SpinWait(1000); //这个数字可以自己调整,它大体类似于执行: for(int i=0;i<1000;i++) { // }
------解决方案--------------------
感觉你的程序IO为主,逻辑也不会超级复杂,不应该占用这么多CPU,估计还是代码有问题,因为涉及字符串处理,突然想到以前有人提过字符串处理很慢的问题,主要问题是C#中经常变化的字符串要用stringbuilder,不要用string,不知道你是不是也有这个问题,动态变化频繁的字符串,使用string和stringbuilder会有非常大的效率差别。
------解决方案--------------------
1、字符串分析处理问题。用比较好的分析处理算法,至少应该用StringBuilder。
2、写入数据的时候不要用线程,合理处理好IO方面的操作。
------解决方案--------------------
关于这种定时任务我用开源的quartz.net框架来做效率都还好,还没仔细看过源码,自己做的时候各种资源都占用的比较多。
------解决方案--------------------
看起来时间主要耗费在格式化上面了,否则CPU不可能占用那么多。
从循环次数来看,每次格式化花的时间太多,必须在这方面花功夫。把格式化的输入、输出要求晒出来看看。
------解决方案--------------------
MSDN里边关于String有如下说明:
String 对象称为不可变的(只读),因为一旦创建了该对象,就不能修改该对象的值。看来似乎修改了 String 对象的方法实际上是返回一个包含修改内容的新 String 对象。如果需要修改字符串对象的实际内容,请使用 System.Text.StringBuilder 类。
------解决方案--------------------
学习
------解决方案--------------------
不要用sheep,可以用Join
另外sheep(1)会导致线程的切换的说法.我有些不赞同,如果是sheep(0)的话.可能会切换
而且sheep(n)这个n在实际的执行中可能不会是你想要的n,可能时间会长
总之用去sheep(n)方法的程序设计也是什么好设计,可以说是个比较烂的设计
改成join试一下吧.
------解决方案--------------------
总之用sheep(n)方法的程序设计不是什么好设计,可以说是个比较烂的设计
------解决方案--------------------