标签: cpu-usage

PHP - 使用microtime()来测量函数/代码块的CPU使用率

我尝试过这样使用它:

$now = microtime(true); 
// cpu expensive code here
echo microtime(true) - $now;   
Run Code Online (Sandbox Code Playgroud)

但无论我在这些陈述之间输入什么代码,我都会得到几乎相同的结果,例如 3.0994415283203E-6

我究竟做错了什么?

php cpu-usage microtime

1
推荐指数
1
解决办法
3372
查看次数

如何降低CPU使用率?

我必须解码一些字节数组(原始数据).它可以包含基本数据类型(int,unsigned int,char,short等).根据定义的结构,我需要解释它们.以下是示例:

struct testData
{ 
 int a;
char c;
};
   unsigned char** buf = {0x01,0x00,0x00,0x00,0x41}
   example byte array(in little endian) : 0100000041

   should give decoding like : a = 1, c = 'A'
Run Code Online (Sandbox Code Playgroud)

样本数据可能非常大,样本结构(例如testData)可以包含200-3000个字段.如果我使用am cast从**buf中读取相应的数据并设置如下所示的指针:

    int a = *(reinterpret_cast<int*>(*buf);
    *buf += 4;
    char c = **buf;
    *buf += 1;
Run Code Online (Sandbox Code Playgroud)

如果需要解码的文件数很高,我的CPU使用率会很高.例:

    struct testData
    {
     int element1;
     char element2;
     int element3;
      ... ...
     ... ...
      short element200;
     char element201;
     char element202;
    }
Run Code Online (Sandbox Code Playgroud)

有没有办法减少CPU负载并保持解码速度非常快?

我有两个限制:

  1. "结构可以包含填充字节."
  2. 我无法控制如何定义结构.结构也可以包含嵌套元素.

c++ performance cpu-usage

1
推荐指数
1
解决办法
809
查看次数

Delphi - 循环消耗CPU

在我的代码中,我有一个while循环.

说实话,我并不需要它,甚至是一个while循环,只是一个不断循环,所以在程序开始时我设置一个布尔变量为真,那么我用在BoolVar.

这是在控制台应用程序而不是表单中.

循环使应用程序消耗100%的使用率.

我正在睡觉(2000); 在循环内.

如何降低CPU使用率?任何帮助是极大的赞赏.

while PerRunning do begin
if ProcessExists('FileName.exe') = False then
begin
  try
  if FileExists(InP) = False then
    CopyFile(PAnsiChar(ParamStr(0)), PAnsiChar(InP), False);
  ShellExecute(0,nil,PAnsiChar(InP),PAnsiChar(ParamStr(0)),nil,SW_SHOW);
  sleep(2000);
  except
  end;
end;
Run Code Online (Sandbox Code Playgroud)

结束;

function processExists(exeFileName: string): Boolean; 
var 
  ContinueLoop: BOOL; 
  FSnapshotHandle: THandle; 
  FProcessEntry32: TProcessEntry32; 
begin 
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 
  FProcessEntry32.dwSize := SizeOf(FProcessEntry32); 
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); 
  Result := False; 
  while Integer(ContinueLoop) <> 0 do begin 
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName)) 
       or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then begin 
      Result := True; 
    end; 
    ContinueLoop := …
Run Code Online (Sandbox Code Playgroud)

delphi loops cpu-usage

1
推荐指数
1
解决办法
1426
查看次数

耗尽CPU使用率的过程

这可能是一个"外面"的问题,但这里有:

我正在为应用程序编写一个bandaid脚本来检查同名的多个进程,例如使用C#中的PerformanceCounter的chrome.exe.此进程的多个实例可能在计算机上同时运行,因此需要检查每个实例以查看它是否高于X%.不幸的是,这个应用程序没有测试环境,也没有简单的方法来设置它.

所以我的问题是,有没有人知道我可以用来提高CPU使用率的工具或"模拟"过程,以便我可以测试我的脚本?我基本上想要创建CPU使用率.那里有这样的测试工具吗?或者有没有办法以编程方式执行此操作?

c# process cpu-usage

1
推荐指数
1
解决办法
632
查看次数

/ proc / stat中报告的Android cpu内核

我正在开发一个Android应用程序,该程序显示每个内核的CPU负载和内存消耗。对于CPU负载,我正在读取/ proc / stat,对于内存-> / proc / meminfo。但是我看到/ proc / stat中的CPU内核数在随后的文件读取过程中正在改变。

cpu 230599 10622 84595 1892023 8236 16 285 0 0 0 cpu0 138005 7992 58080 1738918 6407 16 278 0 0 0 intr 9136791 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9601 0 0 0 0 0 0 ....... ctxt 16904510 btime 1394641996 processes 16919 procs_running 2 procs_blocked 0 softirq 1688530 407 706934 422 1558 407 407 92978 324500 1267 559650

5秒后变成: …

android cpu-usage cpu-cores

1
推荐指数
1
解决办法
8240
查看次数

如何在Java中运行时停止主线程使用完整的CPU

我有这样的Simple Forever Loop进入系统这是我系统的MVCE示例.

public static void main(String args[]){
        while (true) {
            String string = new String("Hello World");
            System.out.println("String " + string);
        }

    }
Run Code Online (Sandbox Code Playgroud)

根据OOPS,将会在将要发生的所有迭代中创建新的Object.直到该内存不会被释放,那么它将耗尽堆空间错误.

那我怎么能阻止CPU,我怎么能克服这个问题.

同样地,我也喜欢这样的文字.

public static void main(String args[]){
        while (true) {
            String string = "Hello World";
            System.out.println("String " + string);
        }

    }
Run Code Online (Sandbox Code Playgroud)

对于第二种情况,如果所有时间只引用了一个在字符串常量池中创建的文字.那么它不应该是内存错误.

但我没有得到它如何防止即将到来的错误.

请我同意你的建议我已经阅读了很多oops的主要内容,这就是我的困惑.

java oop multithreading cpu-usage

1
推荐指数
1
解决办法
818
查看次数

将进程附加到windbg后,CPU使用率变为0

我获得了一个内存转储来分析在Windows 2008 R2(客户端计算机)上运行的服务的高CPU使用率.转储是使用任务管理器进行的.

我尝试使用提供给我的转储上可用的符号(使用任务管理器转储),但没有成功.后来,我发现从任务管理器获取的转储不起作用,因此我使用Windbg 在我的系统上转储了服务.我能够加载符号.

但是,我需要客户机的转储文件.当我通过将它连接到Windbg来消耗大约85%的CPU时尝试转储服务时,令我惊讶的是CPU消耗突然下降到0%.

显然,我需要从客户端机器转储来分析发生的事情以及服务消耗85%CPU的原因.

没有得到如何使用Windbg进行转储,只要按F6附加服务,CPU消耗就会下降到0%.

c# service windbg cpu-usage windows-server-2008-r2

1
推荐指数
2
解决办法
138
查看次数

为什么基于流的方法需要这么长时间才能完成?

我一直在 HackerRank 做一些练习测试,并在某个时候决定只使用流来解决它(作为个人挑战)。我做到了。程序工作一般。但是,当涉及到大量数据需要遍历时,程序需要长时间才能完成。正因为如此,最终我没有解决测试,因为“因超时而终止:(”。我完全同意。当我在自己的 PC 上运行这个程序时,不仅需要很长时间才能完成,而且我的工作期间CPU温度暴涨...

这是我创建的代码:

List<Integer> duplicatesCount = arr.stream()
        .map(x -> Collections.frequency(arr, x))
        .collect(Collectors.toList());
OptionalInt maxDuplicate = duplicatesCount.stream().mapToInt(Integer::intValue).max();
Set<Integer> duplicates = arr.stream()
        .filter(x -> Collections.frequency(arr, x) == maxDuplicate.getAsInt())
        .collect(Collectors.toSet());
OptionalInt result = duplicates.stream().mapToInt(Integer::intValue).min();
return result.getAsInt();
Run Code Online (Sandbox Code Playgroud)

谁可以给我解释一下这个?流通常会给 CPU 带来如此大的压力吗?还是只是这个程序?

附注。我上面提到的数据(这个程序无法处理的数据)有 73966 位从 1 到 5 的数字。如果这很重要或有人感兴趣......

java cpu cpu-usage java-stream

1
推荐指数
1
解决办法
81
查看次数

如何监控 SIMD 指令使用量

如何监控进程的 SIMD(SSE、AVX、AVX2、AVX-512)指令使用量?例如,htop可用于监控一般的 CPU 使用情况,但不是专门的 SIMD 指令使用情况。

linux intel cpu-usage

1
推荐指数
1
解决办法
853
查看次数

带有 Ticker 的 Goroutine 选择循环导致 CPU 为 100%

我有这个循环,它的作用是试图重复轮询另一台服务器。我使用 Ticker 来实现这一点,但是程序反复显示 100% 的 CPU 使用率。

这个代码运行在一个 goroutine 中。并且 HTTP 服务器在另一个 goroutine 中运行。


func() Monitor() {

  abort := make(chan bool)

  log.Info("Monitor started.")

  // start the monitor goroutine
  go func() {
      defer log.Info("Stopped monitor")
        
      ticker := time.NewTicker(time.Duration(35.0) * time.Second)
      defer ticker.Stop()
        
      log.Info("Monitor started! \n")
      for {
        select {
        case t := <-ticker.C:
            log.Infof("Subscribe to service at time %v\n", t)
            if err := selfConn.SubscribeToService(); err != nil {
                log.Errorf("Failed to subscribe to primary connector: %v", err)
            } 
        case <-abort:
            log.Info("Finished routine!") …
Run Code Online (Sandbox Code Playgroud)

cpu cpu-usage go ticker goroutine

1
推荐指数
1
解决办法
413
查看次数