Tag: 性能

Java VM vs .NET CLR的基准testing性能

你有没有必要certificateselect使用.NET而不是基于性能的Java? 对于可以执行以下操作的典型的大容量事务处理系统, 并发数据库事务 math计算 与其他Web服务交互(SOAP / XML,XML-RPC) 我的方法是在JVM和.NET CLR的C#中都使用Java编写基准testing,并在不同负载水平下对上述操作进行基准testing,并比较结果。 除了语言和平台偏好之外, 我有兴趣了解如何在Java VM和.NET CLR之间做出决定性的性能比较 ? 是否有任何全面和受尊重的基准?

混合百分比和固定的CSS

这是从UI.StackExchange.com重复: https://ux.stackexchange.com/questions/1004/mixing-percent-and-fixed-css 你是否曾经应用百分比和固定CSS? 会造成问题,如果是的话,是什么样的? 混合会降低浏览器渲染性能吗? 在渐进渲染浏览器的初始加载时,混合会给你带来奇怪的结果吗? 下面是混合使用的一个简单的例子,它可以是任何混合。 我不是在寻找validation的例子。 我听说你不应该做我在下面的例子,所以我试图找出是否以这种方式使用CSS是一个问题。 混合使用示例: <style> .container { width:300px; } .cell { width:25%; } </style> <table class="container"> <tr> <td class="cell"><td> <td class="cell"><td> <td class="cell"><td> <td class="cell"><td> </tr> </table>

为什么Delphi的编译速度会降低开放时间,我能做些什么呢?

我的公司在delphi运行了一个大型项目十多年。 我们的代码库多年来一直在增长,现在已经达到了400万行代码。 编译速度正在成为一个问题。 我们花了时间去除单位循环引用(一个已知的编译速度慢的原因),并检查了设置的每个方面。 这一点我们无法用我们能够控制的东西进一步实现。 目前,在一台运行Windows XP SP3和Delphi 2006的4核处理器上,启动Delphi并重新编译,需要40秒。 那么,如果我们立即在同一个delphi会议上再做一个完整的构build,则需要1个40秒。 再次做一个完整的构build,它会变得更糟。 等等等等。 (我们很清楚Windows本身caching文件,这对编译速度有很大的影响,上面的数据是基于文件被caching的,我们通过Delphi编译这个项目来设置这个场景,终止它,然后开始一个新的Delphi会话,所以40秒看起来并不慢,只是因为这些文件被Windowscaching,而我们这样做是为了进行苹果对苹果的比较。 令我们困惑的是为什么编译速度变得更糟。 (过去我们观察到,如果这个项目有很多单位的循环引用,那么速度就会变慢。)如果我们终止Delphi并开始一个新的会话,编译时间将回到40秒。 更有意思的是,我们可以通过点击“取消”button中止编译,然后立即完成全部构build,从而达到相同的速度“改善”。 编译时间也会回到40secs。 在我们看来,delphi自己的单元依赖caching效率不如从头开始构build,而且随着时间的推移而变得越来越糟糕。 它也出现取消button不知何故清除此caching。 我们的想法是,如果我们可以利用Delphi IDE子系统来完成这个清理工作,我们总是可以保持编译速度达到最高性能。 但我们不知道如何。 有谁知道我们可以做什么? 我们还在使用Delphi 2006,因为我们还没有find一个将我们的大型项目移植到Unicode的可行方法。 我在论坛上看到,最新的Delphi XE在单元循环引用方面performance出类似的编译速度问题。 任何人都知道delphiXE是否解决了这个问题? ps我们也知道把项目拆分成运行时包可以减less编译时间。 但是出于部署和pipe理的原因,我们尽量避免使用运行时软件包。

C ++ 11 std ::函数比虚拟调用慢?

我正在创build一种机制,允许用户使用装饰器模式从基本构build块形成任意复杂的function。 这在function上是很好的,但是我不喜欢它涉及到大量的虚拟调用,特别是当嵌套深度变大的时候。 这让我很担心,因为复杂的function可能经常被调用(> 100.000次)。 为了避免这个问题,我试图把修饰器scheme一旦完成( to_function()就变成了std::function 。 所有的内部函数调用在std::function构造过程中都是连线的。 我认为这将比原来的装饰器scheme更快,因为在std::function版本中不需要执行虚拟查找。 唉,基准testingcertificate我错了:装饰器scheme实际上比我用它构build的std::function更快。 所以现在我想知道为什么。 也许我的testing设置是错误的,因为我只使用两个简单的基本function,这意味着可以caching的Vtable查找? 我使用的代码包含在下面,不幸的是它很长。 SSCCE // sscce.cpp #include <iostream> #include <vector> #include <memory> #include <functional> #include <random> /** * Base class for Pipeline scheme (implemented via decorators) */ class Pipeline { protected: std::unique_ptr<Pipeline> wrappee; Pipeline(std::unique_ptr<Pipeline> wrap) :wrappee(std::move(wrap)){} Pipeline():wrappee(nullptr){} public: typedef std::function<double(double)> FnSig; double operator()(double input) const{ […]

为什么我的Scala尾recursion比while循环更快?

这里有两个解决scheme在Cay Horstmann的Scala中为Impatient执行4.9:“编写一个函数lteqgt(values:Array [Int],v:Int),返回一个三元组,它包含小于v的值,等于v,大于v“。 一个使用尾recursion,另一个使用while循环。 我认为两者都会编译成相似的字节码,但是while循环比尾recursion要慢2倍。这表明我的while方法写得不好。 import scala.annotation.tailrec import scala.util.Random object PerformanceTest { def main(args: Array[String]): Unit = { val bigArray:Array[Int] = fillArray(new Array[Int](100000000)) println(time(lteqgt(bigArray, 25))) println(time(lteqgt2(bigArray, 25))) } def time[T](block : => T):T = { val start = System.nanoTime : Double val result = block val end = System.nanoTime : Double println("Time = " + […]

C#程序能以某种方式测量自己的CPU使用情况吗?

我正在研究一个将要运行很长时间的后台程序,并且我有一个外部日志程序( SmartInspect ),我想定期使用一些值来进行debugging,以在debugging时实时监控它。 我知道我可以简单地启动多个程序,比如任务pipe理器,或者IARSN TaskInfo,但是我想把所有的东西放在我自己的程序中,因为我也想添加一些简单的规则,比如程序使用多于X%CPU,在日志中标记这个。 我有一个后台线程,定期向SmartInspect提供一些统计信息,如内存消耗,工作集等。 这个线程是否有可能准确衡量它消耗了多less计算机的CPU资源? 主程序是一个单线程应用程序(除了看门狗线程logging统计),所以如果一种技术被限制在一个线程使用多less,那么这也是一个好主意。 我发现了一些与Linux和C的rusage相关的条目。有没有类似的东西可以用于这个? 编辑:好的,我尝试了性能计数器的方式,但是每次调用时都添加了很多GC数据,所以内存使用和垃圾收集的graphics猛增。 我想我现在就把这个部分留下。

CROSS APPLY vs OUTER APPLY速度差

我正在使用CROSS APPLY来join用户和GeoPhone表,一切工作都很快,但现在我有Phone列的NULL值的用户。 交叉应用在最终输出中跳过这些行。 所以我切换到OUTER APPLY。 但是它的工作速度要慢得多(当总输出行数增加1000倍时,速度要慢15倍以上)。 SELECT TOP (10000) dbo.Users.Login, dbo.Users.Phone, GeoPhone.Country FROM dbo.Users CROSS APPLY (SELECT TOP 1 Country FROM dbo.GeoPhone WHERE dbo.Users.Phone <= dbo.GeoPhone.[End]) GeoPhone 与: SELECT TOP (10000) dbo.Users.Login, dbo.Users.Phone, GeoPhone.Country FROM dbo.Users OUTER APPLY (SELECT TOP 1 Country FROM dbo.GeoPhone WHERE dbo.Users.Phone <= dbo.GeoPhone.[End]) GeoPhone 我试图理解为什么。 正如我所看到的执行计划是不同的。 但理论上我看不到任何可能导致这种放缓的计算。 有任何想法吗? 我最终的解决scheme: SELECT […]

PHP include():文件大小和性能

一个没有经验的PHP问题: 我有一个PHP脚本文件,我需要很多地方在不同的页面上包含很多次。 我可以select将包含的文件分成几个较小的文件,并根据需要包含这些文件…或者…我可以将它们全部保存在一个PHP文件中。 我想知道是否有任何性能影响在这种情况下使用一个较大的较小的文件的include()? 例如,200KB文件和20KB文件之间是否有任何性能差异? 谢谢。

性能计数器的性能受到什么影响?

当考虑使用性能计数器作为我公司基于.NET的网站时,我想知道使用它们的开销有多大。 我想让我的网站不断更新它的计数器,还是我最好只在测量时才做?

线程本地存储为什么这么慢?

我正在为D编程语言的自定义标记释放样式内存分配器工作,通过从线程本地区域分配。 看起来线程局部存储瓶颈导致了从这些区域分配内存的速度(〜50%)相比于其他相同的单线程版本的代码,甚至在devise我的代码后,每个分配/释放。 这是基于在一个循环中分配/释放内存很多次,我正在试图弄清楚它是否是我的基准testing方法的人为因素。 我的理解是线程本地存储基本上只需要通过一个额外的间接层来访问某些东西,类似于通过指针访问一个variables。 这是不正确的? 线程本地存储通常有多less开销? 注意:尽pipe我提到了D,但是我也对D中没有特定的一般答案感兴趣,因为如果D的实现比最好的实现慢,D的线程本地存储的实现可能会改进。