我test.cpp
在 macOS Sierra 上编译并运行了以下 C++ 代码。
#include <iostream>
#include <sys/resource.h>
using namespace std;
int main() {
int a = 1;
struct rusage r_usage;
getrusage(RUSAGE_SELF, &r_usage);
cout << "Memory usage = " << r_usage.ru_maxrss << endl;
int b = 2;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然后得到:
? Desktop git:(master) ? ./test
Memory usage = 663552
Run Code Online (Sandbox Code Playgroud)
然后我发现这里的单位ru_maxrss
是千字节 ,所以程序使用了663552千字节?但我只是创建了一个整数。
另一个问题是:ru_maxrss
计数int b = 2
吗?或者它只是在行调用之前计算内存使用情况ru_maxrss
。
我使用点语来绘制一个简单的图形,该图形仅包含一个节点和指向该节点的边缘点。我想出了一种方法:
digraph dot {
n0 [label= "", shape=none]
n0 -> n1
}
Run Code Online (Sandbox Code Playgroud)
此实现在图形顶部创建一个空白。那么如何删除空白呢?换句话说,有没有更好的实现方法?
SFDD
和Manager
是我自己创建的类,以下是我用于测试类 SFDD 的测试文件。(你可以跳过它们并查看我的测试结果)
#include <iostream>
#include <string>
#include "SFDD.h"
int main(int argc, char** argv) {
vector<int> vars_order;
int var_no = 18;
for (int i = 1; i <= var_no; ++i) vars_order.push_back(i);
Vtree* v = new Vtree(1, var_no*2-1, vars_order);
v->save_file_as_dot("vtree");
Manager m(v);
SFDD sfdd1 = m.sfddZero(); // create a SFDD representing Zero
SFDD sfdd2 = m.sfddOne();
SFDD sfdd3 = m.sfddVar(3);
SFDD sfdd4 = m.sfddVar(11);
SFDD sfdd6 = sfdd3.And(sfdd4, m, true);
sfdd6.save_file_as_dot("f=x11_and_x3"); // export sfdd6
cout << "Haha …
Run Code Online (Sandbox Code Playgroud) 正如标题所说,它很容易被描述.
每次我可以将两个单独的语句放在一个块中时,我就会想到这个问题.特别是当我编写像NP完全问题的CPU成本问题时.
是否有必要将两个单独的陈述合并在一起?
c c++ compiler-construction compilation compiler-optimization