小编Nar*_*kha的帖子

为什么Java没有有效地利用我所有的CPU内核

我在具有四核CPU的机器上运行Ubuntu.我编写了一些测试Java代码,它产生了一定数量的进程,这些进程只是在运行时为一定数量的迭代增加一个volatile变量.

我希望运行时间不会显着增加,而线程数小于或等于内核数量,即4.实际上,这些是我从UNIX time命令使用"实时"的时间:

1个线程:1.005s

2个主题:1.018s

3个主题:1.528s

4个主题:1.982s

5个主题:2.479s

6个主题:2.934s

7个主题:3.356s

8个主题:3.793s

这表明添加一个额外的线程不会像预期的那样增加时间,但随后时间增加3和4个线程.

起初我以为这可能是因为操作系统阻止了JVM使用所有内核,但我跑了top,它清楚地表明,有3个线程,3个内核运行在~100%,有4个线程,4个内核是超出.

我的问题是:为什么在3/4 CPU上运行的代码与在1/2运行时的速度大致相同?因为它在所有核心并行运行.

这是我的主要参考方法:

class Example implements Runnable {

    // using this so the compiler does not optimise the computation away
    volatile int temp;

    void delay(int arg) {
        for (int i = 0; i < arg; i++) {
            for (int j = 0; j < 1000000; j++) {
                this.temp += i + j;
            }
        }
    }

    int arg;
    int result;

    Example(int …
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading multicore cpu-usage

16
推荐指数
2
解决办法
7624
查看次数

为 Visual C++ 中的调试定义多个环境变量

我想在 Visual C++ 中调试一个依赖于两个环境变量的程序。

我知道如何定义一个变量(属性配置属性调试环境),但是我在定义两个变量时遇到了问题。我试图用\和将它们分开|,但没有用。

environment-variables visual-c++

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

errorException消息的NLog参数

当我用NLog 2.0.1捕获异常时,我正在寻找一种记录表达消息的方法

try {
    ....
}
catch(Exception ex) {
    logger.ErrorException("Error with query {0}", query, ex);
}
Run Code Online (Sandbox Code Playgroud)

但是NLog不支持它.发生在我身上的其他形式是

logger.ErrorException(  String.Format("Error with query {0}", query)) , ex);
Run Code Online (Sandbox Code Playgroud)

要么

logger.Error("Error with query {0} {1} {2}", query, ex.Message, ex.StackTrace);
Run Code Online (Sandbox Code Playgroud)

要么

logger.Error("Error with query {0}", query);
logger.ErrorException("", ex);
Run Code Online (Sandbox Code Playgroud)

要么

LogEventInfo ei = new LogEventInfo(LogLevel.Error, logger.Name, null, 
                         "Error with query {0}", new object[] { query }, ex); 
logger.Log(ei);
Run Code Online (Sandbox Code Playgroud)

但是没有一个像调用那样简单.logger.Error () 目前,第一个选项是我的偏好,尽管格式化一个字符串可能不会被使用:

  • 第二个选项不使用异常的布局选项.
  • 第三个在日志中创建两个条目,可能会令人困惑.
  • 第四种选择不太清楚.

还有一些?

c# exception-handling nlog

6
推荐指数
2
解决办法
3819
查看次数

prestashop 1.5核心文件覆盖

我想覆盖prestashop 1.5核心文件FrontController.php来覆盖override\classes\controller文件夹,但它没有加载我的覆盖文件夹文件.

<?php

    class FrontController extends FrontControllerCore
    {

    /* Display a specific page if the user country is not allowed */
        protected function displayRestrictedCountryPage() {

        }
    }
Run Code Online (Sandbox Code Playgroud)

任何机构都知道如何在1.5中覆盖核心prestashop文件

我也按照这个文件但没办法解决.

php prestashop

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