小编Mot*_*tti的帖子

快速而肮脏的方式来分析您的代码

当您想获得有关特定代码路径的性能数据时,您使用什么方法?

c++ performance profiling code-snippets

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

标签只能引用输入元素吗?

W3Schools有关于标签的说法:

<label>标记定义为一个标签输入元件. [强调我的]

这是否意味着以下HTML无效?

<!doctype html>
<html>
    <head>
         <title>Example document</title>
    </head>
    <body>
        <label for="x">Label</label> 
        <hr>
        <div id="q" contentEditable="true">Hello</div>
        <hr>
        <div id="x" contentEditable="true">World</div>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

Chrome和IE8都关注World何时Label点击,Firefox则没有.哪个是对的?

html w3c label

13
推荐指数
2
解决办法
3308
查看次数

lexical_cast int to string

它是安全的忽视例外boost::lexical_cast转换时intstd::string

c++ boost lexical-cast

13
推荐指数
2
解决办法
5585
查看次数

激活Clang中的C++ 11支持

我已经下载并构建了clang 3.0版,以便在C++ 11中运行一些功能,但是我得到了这个错误(即使我正在使用该-Wc++11-extensions标志).

S:\ llvm\code> clang ++.exe -Wc ++ 11-extensions variadic.cpp
variadic.cpp:4:19:警告:可变参数模板是C++ 11扩展[-Wc ++ 11-extensions]
模板< typename ... Args>

我在Windows 7(64位)上使用VS10构建了clang,并且构建成功通过.


编辑:由于@cli_hlt指出这是一个警告而不是错误,错误是我没有粘贴无法执行命令:程序不可执行.根本原因是link.exe不在PATH中.一旦我从VS命令提示符运行一切都很好.

c++ clang c++11

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

用于检测将wchar_t*传递给BSTR的静态代码分析

由于BSTR只是typedefwchar_t*我们的代码库,其中字符串文字传递给方法的几个(许多?)的地方期待BSTR这可以胡来了marshallers或任何人谁尝试使用任何BSTR特定的方法(比如SysStringLen).

有没有办法静态检测这种滥用?

我尝试使用VC10 /Wall和静态代码分析Microsoft All Rules进行编译,但是以下任何一个代码都没有被其中任何一个标记.

void foo(BSTR str)  
{
    std::cout << SysStringLen(str) << std::endl; 
}

int _tmain()
{
    foo(L"Don't do that");
}
Run Code Online (Sandbox Code Playgroud)

更新:在试图破坏wtypes.h我已经放弃的这些违法行为之后.

我尝试了两条路径,这两条路径都是我上面的示例程序,但是一旦我尝试了一个真正的项目,它们就失败了.

  1. 创建一个名为BSTR但是由于一个VARIANT有一个BSTR联合成员的类,新类不能有任何构造函数或赋值运算符,这个被破坏的每个地方都NULL被视为一个BSTR.我尝试NULL用具有转换运算符的类型替换但在添加了几十个新运算符(比较,转换等)之后,我开始遇到模糊的调用而放弃了.
  2. 然后我尝试了@CashCow和@Hans建议的方式(BSTR使用typedef另一种类型的指针).这也没有用,在添加toBSTRfromBSTR乱丢comutil.h(_bstr_t)和其他转换的地方之后,我终于到了编译器在IDL生成的标题处被阻塞的点(默认值被转换为文字宽字符串).

总之,如果有人知道一个代码分析工具可以帮助我很高兴听到它,我已经放弃了尝试自己实现这个目标.

c++ bstr visual-c++ static-code-analysis

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

构造函数中的虚函数,为什么语言不同?

在C++中,当从构造函数中调用虚函数时,它的行为不像虚函数.

我认为第一次遇到这种行为的每个人都感到惊讶,但第二次认为这是有意义的:

只要派生的构造函数没有被执行的对象是不是又一个衍生实例.

那么如何调用派生函数呢?前提条件没有机会建立.例:

class base {
public:
    base()
    {
        std::cout << "foo is " << foo() << std::endl;
    }
    virtual int foo() { return 42; }
};

class derived : public base {
    int* ptr_;
public:
    derived(int i) : ptr_(new int(i*i)) { }
    // The following cannot be called before derived::derived due to how C++ behaves, 
    // if it was possible... Kaboom!
    virtual int foo()   { return *ptr_; } 
};
Run Code Online (Sandbox Code Playgroud)

它与Java和.NET完全相同,但他们选择了另一种方式,并且可能是最不惊讶原则的唯一原因?

你认为哪个是正确的选择?

.net c++ java language-agnostic

12
推荐指数
2
解决办法
3714
查看次数

轮廓引导优化(C)

谁知道这个编译器功能?GCC似乎支持这一点.它是如何工作的?潜在收益是多少?在哪种情况下它很好?内环?

(这个问题是具体的,不是关于一般的优化,谢谢)

c c++ optimization gcc pgo

12
推荐指数
2
解决办法
4606
查看次数

比较冷启动和热启动

重新启动(冷启动)后,我们的应用程序比启动一次(热启动)需要更多的时间.

大多数(如果不是全部)差异似乎来自加载DLL,当DLL在缓存的内存页面中时,加载速度要快得多.我们尝试使用ClearMem来模拟重新启动(因为它比实际重新启动耗时少得多)并得到了混合结果,在某些机器上它似乎非常一致地模拟重启,而在某些机器上则没有.

总结我的问题是:

  1. 您是否在冷启动和暖启动之间的启动时间方面存在差异?
  2. 你是如何解决这些差异的?
  3. 你知道一种可靠地模拟重启的方法吗?

编辑:

澄清意见:

  • 该应用程序主要是带有一些.NET的本机C++(第一个加载的.NET程序集支付CLR).
  • 我们正在寻求改善加载时间,显然我们分享了分析并改进了代码中的热点.

我忘了提到的一点是我们通过重新设置所有二进制文件来获得一些改进,因此加载器不必在加载时执行它.

windows performance reboot

12
推荐指数
2
解决办法
8715
查看次数

dot中的子图集群排名

我正在尝试在media wiki上使用graphviz作为软件的文档工具.

首先,我记录了一些运作良好的阶级关系.一切都按预期垂直排列.

但是,然后,我们的一些模块是dll,我想分成一个盒子.当我将节点添加到集群时,它们已经过了边缘,但集群似乎有一个LR排名规则.或者被添加到群集中打破了节点的TB排名,因为群集现在出现在图表的一侧.

此图表示我正在尝试执行的操作:此时,cluster1和cluster2显示在cluster0的右侧.

我想/需要它们出现在下面.

<graphviz>
digraph d {
    subgraph cluster0 {
      A -> {B1 B2}
      B2 -> {C1 C2 C3}
      C1 -> D;
    }
    subgraph cluster1 {
      C2 -> dll1_A;
      dll1_A -> B1;
    }
    subgraph cluster2 { 
      C3 -> dll2_A;
    }
    dll1_A -> dll2_A;
}
</graphviz>
Run Code Online (Sandbox Code Playgroud)

dot graphviz

12
推荐指数
2
解决办法
2万
查看次数

_1是C++ 0x的一部分吗?

我已经看到两个最近的答案使用_1纯C++ 0x解决方案(没有明确提到boost lambdas).

是否有这样的动物,std::_1我认为拥有原生的lambdas将使这样的构造多余.

Google代码搜索std::_1会带来同一项目的两个结果,因此不确定.

c++ lambda boost c++11

12
推荐指数
3
解决办法
2295
查看次数