Tag: 性能

斯卡拉vs Python的Spark性能

我比Python更喜欢Python。 但是,由于Spark本身就是用Scala编写的,所以我期望我的代码在Scala中运行得比Python版本更快,原因很明显。 有了这个假设,我想学习和写一些非常普通的预处理代码的Scala版本的一些1 GB的数据。 数据来自Kaggle的SpringLeaf竞赛。 只是给出了数据的概述(它包含1936年的维度和145232行)。 数据由各种types组成,如int,float,string,boolean。 我正在使用6个核心中的8个进行Spark处理; 这就是为什么我使用minPartitions=6以便每个核心都有可处理的东西。 斯卡拉代码 val input = sc.textFile("train.csv", minPartitions=6) val input2 = input.mapPartitionsWithIndex { (idx, iter) => if (idx == 0) iter.drop(1) else iter } val delim1 = "\001" def separateCols(line: String): Array[String] = { val line2 = line.replaceAll("true", "1") val line3 = line2.replaceAll("false", "0") val vals: Array[String] = […]

对于性能来说重要的不好?

我恨他们,它无视CSS的级联性质,如果你不小心使用它们,最终会增加更多!important的循环。 但是我想知道他们对performance不好? 编辑 从(快速)答复我可以得出结论,它不会对性能产生(重大)影响。 但是很高兴知道这一点,即使这只是一个让人沮丧的额外论据)。 编辑2 BoltClock指出,如果有2个!important声明,说明会select最具体的声明。

如何避免Java游戏中的垃圾收集延迟? (最佳实践)

我是用于Android平台的Java性能调整互动游戏。 曾经有一段时间,垃圾收集的绘图和交互有一个呃逆。 通常不到十分之一秒,但有时在非常慢的设备上可能会达到200毫秒。 我使用ddms分析器(Android SDK的一部分)来search我的内存分配来自哪里,并从我的内部绘图和逻辑循环中消除它们。 最严重的罪犯是短循环, for(GameObject gob : interactiveObjects) gob.onDraw(canvas); 每执行一次循环,都会分配一个iterator 。 我现在使用数组( ArrayList )为我的对象。 如果我在内部循环中需要树或哈希,我知道我需要小心,甚至重新实现它们,而不是使用Java集合框架,因为我无法负担额外的垃圾回收。 当我看着优先级队列时,可能会出现这种情况。 我也有麻烦,我想使用Canvas.drawText显示分数和进度。 这不好, canvas.drawText("Your score is: " + Score.points, x, y, paint); 因为Strings , char数组和StringBuffers将被分配到所有的工作。 如果你有几个文本显示项目,并运行框架每秒60次开始累加,并会增加你的垃圾收集打嗝。 我认为这里的最佳select是保持char[]数组并将其手动解码为int或double ,并将string连接到开始和结束。 我想听听是否有更清洁的东西。 我知道那里一定有其他人在处理这件事。 你如何处理它,以及你发现在Java或Android上交互运行的陷阱和最佳实践? 这些gc问题足以让我错过手动内存pipe理,但不是很多。

在ruby中使用单引号与双引号是否有性能提升?

你知道如果在ruby中使用双引号而不是单引号,在ruby1.8和1.9中以任何有意义的方式降低性能。 所以如果我input question = 'my question' 比它快吗? question = "my question" 我想ruby试图找出是否遇到双引号需要评估,并可能花费一些周期做这个。

Android工作室需要太多的内存

我已经安装了Android Studio 1.0 RC 2.我安装了4GB内存,但是启动Android Studio并启动Android模拟器后,只有这两个内存使用了超过90%的物理内存。 有什么办法可以减less这个内存的使用吗? 由于这个内存问题,我无法同时打开其他应用程序。

如何编写最能利用CPUcaching来提高性能的代码?

这可能听起来像一个主观的问题,但我正在寻找的是具体的实例,你可能遇到过这个问题。 如何使代码,caching有效/caching友好(更多的caching命中,尽可能less的caching未命中)? 从这两个angular度来看,数据caching和程序caching(指令caching),即代码中与数据结构和代码结构有关的东西,应该注意使其caching有效。 是否有任何特定的数据结构必须使用/避免,还是有一种特定的方式来访问该结构的成员等…使代码caching有效。 是否有任何程序结构(如果,切换,中断,转到,…),代码stream(内部如果,如果内部等等…)应该遵循/避免在这件事情? 我期待着听到有关caching高效代码的个人经验。 它可以是任何编程语言(C,C ++,汇编,…),任何硬件目标(ARM,Intel,PowerPC,…),任何操作系统(Windows,Linux,S ymbian,…)等。 品种将有助于更好地深入理解它。

将索引添加到等值的连续运行

做一个计数器索引比使用循环有更快的方法吗? 在相同价值的连续运行中,指数应该是相同的。 我发现这个循环非常慢,特别是当数据太大的时候。 为了说明,这里是input和期望的输出 x <- c(2, 3, 9, 2, 4, 4, 3, 4, 4, 5, 5, 5, 1) 期望的结果计数器: c(1, 2, 3, 4, 5, 5, 6, 7, 7, 8, 8, 8, 9) 请注意, 不连续的运行具有不同的索引。 例如,请参阅值2和4的所需索引 我低效率的代码是这样的: group[1]<-1 counter<-1 for (i in 2:n){ if (x[i]==x[i-1]){ group[i]<-counter }else{ counter<-counter+1 group[1]<-counter} }

基准Linq2SQL,Subsonic2,Subsonic3 – 任何其他的想法,使他们更快?

我正在与亚音速2超过3年现在… 在Linq出现之后,随后是Subsonic 3,我开始考虑转向连接到sql的新Linq期货。 我必须说,我开始移动和SubSonic 3端口我的亚音速2,很快我发现,速度是如此之慢,我不相信 – 并开始所有的testing。 然后我testingLinq2Sql,并看到一个延迟 – 比较它与Subsonic 2。 我的问题是,特别是对于linq2sql和即将到来的dotnet版本4,我还能做些什么来加速它? 还有什么linq2sql设置,或类,而不是我用这个代码我的电话 我在这里把我做testing的项目放在这里,也是结果的屏幕截图。 我如何进行testing – 以及我的措施的准确性。 我只用于我的问题谷歌浏览器,因为它很难让我在这里展示很多其他措施,我已经做了更复杂的程序。 这是最简单的一个,我只是测量数据读取。 我怎么能certificate这一点。 我做了一个简单的Thread.Sleep(10秒),看看我在Google Chrome Measure上看到了10秒,是的,我看到了。 ../../../GoogleChromeFastSpeedMesure.gif 这里是更多的testing与这个睡觉thead看什么实际上铬给。 10秒延迟 延迟100毫秒 零延迟 只有一小段15ms的时间会变得很短暂,与我其余的testing相比,我并不在乎。 所以我测量 我只是测量通过每种方法读取的数据 – 没有计算数据或数据库延迟,或任何磁盘读取或类似的东西。 后来的图像与结果我显示没有磁盘活动存在的措施 看到这个图片,看看我测量的是什么,如果这是正确的 为什么我select了这种testing 它很简单,它是真实的,而我真正的问题在于,我发现真正的数据在实际程序中出现亚音速3的延迟。 现在让我们来testing一下 首先看到这个图像,我有4-5调用每个方法,一个接一个。 结果是。 对于一个循环100次,要求5行,一个不存在,近似.. 简单的adonet: 81ms SubSonic 2: 210ms linq2sql: 1.70秒 linq2sql使用CompiledQuery.Compile: 239ms 亚音速3: 15.00秒 (哇 – 极端缓慢) […]

提供大量数据的查询的最佳MySQL设置?

我是一名科学家,我使用MySQL作为数值模拟结果的存储。 通常情况下,我有一套通过我的实验和一套控制系统获得的数据。 这两个数据集存储在一个表中。 一个指标字段告诉我logging是来自实验还是来自控制集。 这个表通常有约1亿条logging。 5000万次实验和5000万次控制。 当我对数据进行后处理时,我的典型任务包括首先发出以下两个查询: select b0,t0 from results_1mregr_c_ew_f where RC='E' and df>60 /// getting experiments data 和 select b0,t0 from results_1mregr_c_ew_f where RC='C' and df>60 /// getting controls data 我有一个关于RC,DF的多列索引。 这些查询花费了大量时间,查询大部分时间都在“发送数据” 我正在使用12GB内存的8core MacPro上运行。 我是这台机器的一个用户,这个任务是主要的任务,因此我可以将所有的RAM专用于MySQL。 所有表是MyISAM(我可以将它们转换,如果这会提高我的查询速度)。 我将不胜感激任何关于如何加快这些查询的build议。 我应该改变一些设置,指数,查询…. 在这些查询中,我预计会得到约5000万条logging。 请注意,由于pipe理原因,将表格拆分成两个表格,其中一个包含实验,另一个包含对照观察。 这里是输出: explain select b0, t0 from results_1mregr_c_ew_f where RC="C" and df>60 +—-+———–+———————+—–+————-+—+——-+—-+——-+———–+ | […]

string连接vsstring生成器。 性能

我有一个情况,我需要连接几个string形成一个类的ID。 基本上我只是在列表中循环获取对象的ToString值,然后连接它们。 foreach (MyObject o in myList) result += o.ToString(); 这份名单预计不会超过5个元素(虽然它可能只是一个非常非常小的情况),通常会有1到3个元素,通常只有一个或两个元素。 什么是更好的性能,保持串联或使用StringBuilder? StringBuilder bld = new StringBuilder() foreach (MyObject o in myList) bld.Append(o.ToString()); 我不确定在最常见的情况下,创buildStringBuilder比标准连接需要更多的时间。 这是懒惰的,列表中的项目一旦创build就不会改变,所以当被调用的时候,id是懒惰地构造的。 作为一个侧面说明…我应该使用固定的数组,而不是一个列表? 如果我这样做,我会得到任何performance或记忆改善吗? (无论如何,List只能用作IEnumerable) 对这个问题更普遍的看法可能是,有多less个string足以停止连接并开始构build? 我应该甚至打扰testing案例的情况? if (myList.Count > 4) ConcatWithStringBuilder(myList);