问题标签 [performancecounter]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
performance - 第二次运行托管应用程序显示的性能与第一次不同
我有一个基准测试应用程序来测试我编写的一些 API 的性能。在这个基准测试应用程序中,我基本上使用 QueryPerformanceCounter 并通过将调用 API 前后 QPC 值的差异除以频率来获取时间。但是如果我从不同的驱动器运行应用程序(在同一组 Dll 上运行的相同可执行文件),基准测试结果似乎会有所不同。此外,在特定驱动器上,第一次运行应用程序、关闭应用程序并再次运行它会产生不同的基准测试结果。谁能解释这种行为?我在这里错过了什么吗?
一些更有用的信息:
行为是这样的:运行应用程序,关闭它并再次运行它,基准测试结果似乎在第二次运行时有所改善,此后保持不变。这种行为在从 C 盘运行的情况下更加突出。我还想提一下,我的基准应用程序可以选择重新运行/重新测试特定的 API,而无需关闭应用程序。我确实知道这涉及到 jitting,但我不明白的是,在第一次运行应用程序时,当您在不关闭应用程序的情况下多次重新运行 API 时,性能在运行几次后稳定下来,然后当您关闭并重新运行时同样的测试,性能似乎有所提高。
此外,您如何考虑从不同驱动器运行时的性能变化?
[信息更新]
我做了一个ngen,现在来自同一位置的不同运行之间的性能差异消失了。即如果我打开基准应用程序,运行一次,关闭它并从同一位置重新运行它,它会显示相同的值。
但是我现在遇到了另一个问题。当我从 D 驱动器启动应用程序并运行它几次(在同一启动基准程序中的 API 迭代几次),然后从第 3 次迭代开始,所有 API 的性能似乎下降了 20% 左右. 然后,如果您关闭并重新启动应用程序并运行它,对于前 2 次迭代,它会给出正确的值(与从 C 获得的值相同),然后性能再次超出该值。从 C 盘运行时看不到此行为。从 C 盘开始,无论您运行多少次,它都非常一致。
我正在使用大型双数组来测试我的 API 性能。我担心 GC 会在测试之间启动,所以我在每次测试之前和之后都明确地调用 GC.Collect() 和 GC.WaitForPendingFinalizers()。所以我认为这与GC无关。
我尝试使用 AQ 时间来了解从第 3 次迭代开始发生了什么,但有趣的是,当我使用 AQ 时间分析它运行应用程序时,性能根本没有下降。
性能计数器 as 不建议任何有趣的 IO 活动。
谢谢尼兰詹
asp.net - 大型静态结果集上的 ObjectDataSource 缓存
我有一个objectdatasource,它将返回一个潜在的大集合(最多200,000条记录),这些集合在gridview中绑定和分页。我在 objectdatasource 上使用默认分页和缓存。返回的数据仅每周更新一次,因此过时的数据不是问题。此解决方案中的分页也比我使用自定义分页创建解决方案时更快。
我的问题是:缓存这么大的记录集你可以接受吗?如果不是,为什么?是否有任何性能计数器可用于查看缓存数据对内存产生的影响?
谢谢!
asp.net - ASP.NET 可以模拟用户删除性能计数器类别吗?
我相信我在本地机器上运行 ASP.NET 页面时成功地模拟了我自己的用户帐户。
使用此处描述的方法,我已成功将WindowsIdentity.GetCurrent().Name
ASPNET 更改为我的域帐户。
我可以成功写入文件系统上只有我的帐户有权访问的文件。但是,当我尝试删除性能计数器类别时,我得到Access Denied。
我对注册表的分支进行了审计,它告诉我MyMachine\ASPNET 在 Object Access 失败。
这是它失败的代码:
它在删除呼叫上失败。
(我的帐户是管理员,我可以在 ASP.NET 上下文之外成功运行相同的代码)。
我怀疑这个 System.Diagnostics 命名空间调用实际上是在调用一些 COM 进程,并且不知何故因为第二跳而被退回。谁能确认可能发生了什么?
编辑:异常:访问被拒绝描述:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详情:
System.ComponentModel.Win32Exception:访问被拒绝
在完全信任下运行。
c# - PerformanceCounter 的 C# 替换
我想知道是否有用于精确时间测量的“.net 集成”解决方案(如函数的执行时间)?目前我正在使用来自 Kernel32 的 PerformanceCounters。
windows-server-2003 - Commerce Server:自定义计数器文件视图内存不足
Commerce Server 似乎为每个目录/站点添加了大量计数器,我们目前正在推送其中的 45 个。我尝试增加 machine.config 中的大小,这有帮助,但还不够。
有谁知道如何以编程方式清除商务服务器计数器?除此之外,禁用它们?
c# - c# performanceCounter 设置计数器的原始值
我正在尝试 System.Diagnostic 的 c# PerformanceCounter Library 部分。在使用设置计数器的原始值时
公共长原始值 { 设置;得到; }
我将 Rawalue 传递给 0。但是我注意到计数器的最大值被重置为一个非常大的数字。计数器的先前值为 2
有人可以帮助我并指出我可能犯的任何错误,这是我的代码
iphone - iPhone 上的性能计数器
我正在尝试在 iPhone 上找到最好的 incode 性能监控方法。
在 Windows 平台上,我将使用以下功能:
QueryPerformanceCounter((LARGE_INTEGER *)&ctr);
QueryPerformanceFrequency((LARGE_INTEGER *)&freq);
iPhone上有类似的东西吗?在不使用 Instruments 或 Shark 等外部工具的情况下,我可以计时的最高分辨率是多少?
.net-1.1 - GetProcessesByName() 抛出进程性能计数器被禁用
我们有一个使用的应用程序,Process.GetProcessesByName()
但它仅在一台用户 PC 上失败,并出现以下错误:
进程性能计数器已禁用
我在注册表中搜索了禁用性能计数器条目,但它不存在,值设置为 1。
用户 env 是具有管理权限的 XP。
我知道在 Windows Server 2003 上,用户帐户需要是性能计数器用户组的成员才能完成此操作。
关于如何启用进程性能计数器的任何想法?
c++ - 在哪里可以找到在 C++ 中将数据发布到 perfmon 的文档?
几年前,我编写了一些代码来“发布”数据以供 perfmon 使用。使用这些计数器有很好的记录,但我发现(当时)找到好的文档和示例代码来发布 perfmon 的数据具有挑战性。
有谁知道我在哪里可以得到这个文件?我似乎还记得一些类包装器,但我可能弄错了。
编辑:
我确实找到了这个,我会继续寻找“自定义应用程序性能计数器”。
c# - 如何对硬件性能计数器进行编程
我一直在为我的论文处理这个问题。目标是开发一个专门用于 Windows 2K8 服务器的 .net 服务器监控工具。到目前为止,我只能访问软件性能计数器。意思是那些通过 perfmon 和 WMI 类可用的。
但是还有一个问题是我需要能够监视诸如发生的 TLB 未命中的数量或当前的内存带宽之类的事情。这就是我被卡住的地方......由于没有标准的.net方法来获取这些计数器,我一直在阅读来自Oprofile等开源程序的一些代码。但是由于我不知道我到底在寻找什么,所以在这方面没有取得太大进展。
所以我谦虚地问这里是否有人,他对这种事情有任何经验,可以帮助我一点。
提前致谢。