小编rag*_*ava的帖子

测量一段代码占用的CPU时间,在Unix/Linux上的C中

clock()可以用作可靠的API来测量CPU执行代码片段所花费的时间吗?当使用times()/ clock()验证时,两者似乎都不能精确测量所花费的CPU时间.

首先,可以使用API​​ clock()/ times()来测量函数/代码片段的执行时间,如下例所示?有没有更好更可靠的选择?该机制适用于Linux,HP-UX,IBM-AIX和Sun Solaris,因为我们需要测量(和&比较)所有这些平台上的一段代码的性能.

请建议.另外,如果我遗漏了任何微不足道的事,请告诉我.

bbb@m_001:/tmp/kk1$ ./perf_clock 102400
{clock(): S          0 E          0 D    0.0000000000}
bbb@m_001:/tmp/kk1$ ./perf_clock 204800
{clock(): S          0 E      10000 D    0.0100000000}
bbb@m_001:/tmp/kk1$ cat perf_clock.c

#include <stdio.h>
#include <string.h>
#include <time.h>
#include <unistd.h>

void test_clock(char* sbuf, int* len){
    clock_t start, end; int i=0;
    start = clock();
    while(i++ < 500) memset((char*)sbuf,0,*len);
    end = clock();
    printf("{clock(): S %10lu E %10lu D %15.10f}\n",
        start,end,(end-start)/(double) CLOCKS_PER_SEC);
}
int main(int argc,char* argv[])
{
        int len=atoi(argv[1]);
        char *sbuf=(char*)malloc(len);
        test_clock(sbuf,&len);
        free(sbuf); return …
Run Code Online (Sandbox Code Playgroud)

c unix performance

6
推荐指数
3
解决办法
7400
查看次数

适用于不那么聪明的程序员的源控制系统

问题:

一个庞大的代码库,跨越数百万SLoC,由大量的第二/第三速率程序员(大多数人并不关心)维护(支持/主动增强等).几十年前,很少有智能人员使用下面使用CVS的包装器,当前这一代开发人员正在使用该系统(其中90%的人没有直接使用CVS,或者听说过/使用过另一个命令行源控制系统) .

效果:

使用CVS和跨多个模块的多个团队,不可避免地=> CVS分支合并到主干.这将是一种以最虔诚和仪式可能的方式实践的活动.[=>蛮力; 计划好几个星期,涉及十几个人2/4天.手动处理数百个(有时数千个)源. 有趣的是,涉及的人不是修复的原始所有者,他们只是通过检查差异; 真的,不是在开玩笑!这导致库/模块/功能的完整性存在很多不一致性,并且在这些合并期间花费了太多精力来纠正由于回归导致的缺陷.

而现在,问题是:

什么替代源控制系统可以带来一些积极的变化,并改善程序员/经理和环境中的其他人的生活?

由于身边的每一个人似乎都醉KoolAid(同唱"这 - 是 - 如何-事情,是全熟,处处"),甚至没有给出关于寻找一个替代一想,是时候有人做到这一点.但考虑到那些使用该系统的人,应牢记以下几个方面.

  1. 简单易用和理解,甚至Joe Coder应该能够毫不费力地使用它.(无论如何这不需要,因为包装器会隐藏真正的引擎盖下的东西)
  2. 一个巨大的代码库(由多种语言的源组成),在任何给定时间都有多个(大约30个)活动分支.
  3. 轻松融入各个分支机构.(考虑到变化量非常大)
  4. 如果可以的话,对该系统的商业支持将是甜蜜的.
  5. 开发在UNIX服务器上进行(至少应在HP-UX/Solaris上运行)
  6. 应该很好地扩展(数千个用户/数十万个来源)
  7. 好文档
  8. 简单/清晰的基于浏览器的界面,用于比较/查看更改/副本.
  9. 存储库中没有二进制文件,因此无需担心它们.
  10. 将当前存储库内容导入新系统的规定.

所以,请建议.有希望&&出路吗?:) 我很确定像git这样的东西会被彻底拒绝(他们相信"git只适用于聪明的人")

编辑:我也考虑过Mercurial和BitKeeper,并向链接人员提及过它.希望最好的!谢谢!:)

cvs version-control codebase

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

awk/gawk似乎覆盖了结果上的列

[TRIVIAL] [求助]

tl:dr - DOW CRLF觉得好像是胡子行为不端; 琐碎的错误!

我不确定为什么awk/gawk的表现如此.任何提示?有没有看过awk结果覆盖终端上的列?我只在一台机器上看到这个; 在其他地方,东西工作得很好!不确定这是终端行为不端还是其他任何事情.一个stty sane似乎并没有帮助的.有谁见过类似的东西?

 $ cat in.txt 
2132088 AAA_WEB_50181_552222195-1
2110665 AAA_WEB_50177_547796499-2
2157591 AAA_WEB_50181_551310844-1
2117370 AAA_WEB_50178_549250104-1
2109777 AAA_WEB_50180_551512637-1
2112704 AAA_WEB_50179_410838823-13
2116984 AAA_WEB_50178_549463801-2
2119511 AAA_WEB_50179_550076677-2
2122008 AAA_WEB_50180_551679428-1
2124984 AAA_WEB_50177_548026293-1
 $ awk '{print $2 " " $1}' in.txt 
 213208850181_552222195-1
 211066550177_547796499-2
 215759150181_551310844-1
 211737050178_549250104-1
 210977750180_551512637-1
 211270450179_410838823-13
 211698450178_549463801-2
 211951150179_550076677-2
 212200850180_551679428-1
 212498450177_548026293-1
 $ cat /etc/issue.net 
Ubuntu 14.04.4 LTS
 $ gawk '{print $2 " " $1}' in.txt 
 213208850181_552222195-1
 211066550177_547796499-2
 215759150181_551310844-1
 211737050178_549250104-1
 210977750180_551512637-1
 211270450179_410838823-13
 211698450178_549463801-2
 211951150179_550076677-2
 212200850180_551679428-1
 212498450177_548026293-1
 $ gawk -W …
Run Code Online (Sandbox Code Playgroud)

bash terminal awk gawk stty

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

标签 统计

awk ×1

bash ×1

c ×1

codebase ×1

cvs ×1

gawk ×1

performance ×1

stty ×1

terminal ×1

unix ×1

version-control ×1