我有一个处理大量数据的高性能应用程序。 它在很短的时间内接收,分析和丢弃大量的信息。 这导致我目前正试图优化,但也会导致次要问题的相当数量的对象stream失。 当垃圾收集开始时,可能会导致一些长时间的延迟,因为它会清理一些东西(我的意思是10秒到100毫秒)。 99%的时间是可以接受的,但是对于大约1-2分钟的短时窗口,我需要绝对确保垃圾收集不会造成延迟。 我知道这些时间会在什么时候发生,我只是需要一种方法来确保垃圾收集在这段时间内不会发生。 该应用程序是使用.NET 4.0 Framework在C#中编写的,如果重要,则使用托pipe代码和非托pipe代码。 我的问题是 是否有可能暂停垃圾收集整个程序? 是否有可能使用System.GC.Collect()在窗口之前强制垃圾收集,我需要免费的垃圾收集,如果我做了多久,我会成为垃圾收集免费? 人们对减less垃圾收集整体需求有什么build议? 注 – 这个系统相当复杂,有很多不同的组件。 我希望避免去一个方法,我必须在程序的每个类上实现一个自定义的IDisposable接口。
我想知道如果我有一个这样的联接查询 – Select E.Id,E.Name from Employee E join Dept D on E.DeptId=D.Id 和一个像这样的子查询 – Select E.Id,E.Name from Employee Where DeptId in (Select Id from Dept) 当我考虑性能哪两个查询会更快, 为什么 ? 还有一段时间,我应该比另一个更喜欢? 对不起,如果这太微不足道了,但我很困惑。 另外,如果你们可以build议我使用工具来衡量两个查询的性能,那将是非常好的。 非常感谢!
在numpy / scipy ,是否有一种有效的方法来获取数组中唯一值的频率计数? 沿着这些线路的东西: x = array( [1,1,1,2,2,2,5,25,1,1] ) y = freq_count( x ) print y >> [[1, 5], [2,3], [5,1], [25,1]] (对于你,R用户在那里,我基本上是在寻找table()函数)
执行一些testing后,我发现printf比cout快得多。 我知道它是依赖于实现的,但在我的Linux机器上, printf速度是8倍。 所以我的想法是混合两种打印方法:我想使用cout来打印简单的图片,并且我打算使用printf来产生巨大的输出(通常是一个循环)。 我认为只要在切换到其他方法之前不要忘记刷新就可以了。 cout << "Hello" << endl; cout.flush(); for (int i=0; i<1000000; ++i) { printf("World!\n"); } fflush(stdout); cout << "last line" << endl; cout << flush; 这样可以吗? 更新:感谢所有宝贵的反馈。 答案总结:如果你想避免棘手的解决scheme,只是简单地不要使用带有cout endl ,因为它隐式地刷新缓冲区。 改用"\n" 。 如果产生大量输出,这可能会很有趣。
我有一个TextBox的DetailsView ,我希望input的数据 总是保存在首字母大写。 例: "red" –> "Red" "red house" –> " Red house" 我怎样才能达到这个最大化的performance ? 注 : 根据答案和答案的评论,很多人认为这是要求将string中的所有单词大写。 Eg => Red House 它不是,但如果这是你所寻求的 ,找一个使用TitleInfo的ToTitleCase方法的答案。 (注意:对于实际问题,这些答案是不正确的。) 请参阅TextInfo.ToTitleCase doc以了解警告(不会触及全部大写的单词 – 它们被认为是缩略词;可能会在“不应该”降低的单词中间显示小写字母,例如“McDonald”=>“Mcdonald”;不保证处理所有针对文化的细微差别重新规则。) 注 : 关于第一个字母是否应该被强制为小写,这个问题是模棱两可的 。 接受的答案假设只有第一个字母应该改变 。 如果要强制除第一个string外的string中的所有字母都是小写字母 ,请查找包含ToLower 且不包含ToTitleCase的答案 。
所以我经常发现我自己testing了一小段代码,看看哪个实现是最快的。 通常我会看到基准testing代码没有考虑到jitting或垃圾回收器的评论。 我有以下简单的基准function,我已经慢慢演变: static void Profile(string description, int iterations, Action func) { // warm up func(); // clean up GC.Collect(); var watch = new Stopwatch(); watch.Start(); for (int i = 0; i < iterations; i++) { func(); } watch.Stop(); Console.Write(description); Console.WriteLine(" Time Elapsed {0} ms", watch.ElapsedMilliseconds); } 用法: Profile("a descriptions", how_many_iterations_to_run, () => { // […]
我是一名PHP开发人员,我一直认为微观优化是不值得的。 如果你真的需要额外的性能,你可以编写你的软件,使其体系结构更快,或者编写一个C ++扩展来处理缓慢的任务(或者更好的是,使用HipHop编译代码)。 不过,今天一位同事告诉我,这里有很大的差别 is_array($array) 和 $array === (array) $array 我就像是“呃,这真是毫无意义的比较”,但他不同意我的看法。他是我们公司最好的开发人员,每天负责一个网站,每天处理大约5千万个SQL查询 – – 例如。 所以,我在这里想知道他可能是错的还是微观优化真的值得时间和地点?
我想知道我能做些什么来提高Excel自动化的性能,因为如果你在工作表中有很多事情可能会很慢。 这里有一些我发现自己: ExcelApp.ScreenUpdating = false – closures重ExcelApp.ScreenUpdating = false的屏幕 ExcelApp.Calculation = Excel.XlCalculation.xlCalculationManual – closures计算引擎,以便Excel在单元格值更改时不会自动重新计算(完成后将其重新打开) 减less对Worksheet.Cells.Item(row, col)和Worksheet.Range调用 – 我必须轮询数百个单元格才能find我需要的单元格。 实现一些细胞位置的caching,将执行时间从约40秒减less到约5秒。 什么样的interop调用会对性能产生重大影响,应该避免? 你还能做什么来避免不必要的处理?
每次我需要一个View容器时,我一直在使用RelativeLayout,因为它的灵活性,即使我只想显示一些非常简单的东西。 是否可以这样做,还是从性能/良好实践的angular度来看,我应该尝试使用LinearLayout? 谢谢!
我试图find最快的方法来检查给定的数字是否是素数(在Java中)。 以下是我提出的几种素质testing方法。 有没有比第二个实现(isPrime2)更好的方法? public class Prime { public static boolean isPrime1(int n) { if (n <= 1) { return false; } if (n == 2) { return true; } for (int i = 2; i <= Math.sqrt(n) + 1; i++) { if (n % i == 0) { return false; } } return true; } […]