有啥好的习惯和工具可以帮助程序员提高工作效率

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有啥好的习惯和工具可以帮助程序员提高工作效率相关的知识,希望对你有一定的参考价值。

这些高效的工具对于程序员是大有帮助的,你一旦开始使用,就会离不开它们。

Git

以前是有不少的版本控制工具,有好用的,同时也有不太好用的,但总的来说它们都没有很好的发展。这时候Git出现了,还有GitHub,EGit,一旦你用上了这个神奇的工具,估计你就很难再碰到更好的VCS了。

Stack Overflow

不开玩笑,2005年的时候你用google搜过技术相关的资料吗?又或者1995年那阵上FidoNet去找一些答案?这样的情景太可怕了。那会儿搜索出来的东西都是一些无聊透顶的论坛讨论,全是一些伪专家在谈论一些错误的东西。
当然,这些论坛现在可能还存在,但没有一个还能出现在Google搜索结果的首页了。现在,如果你搜索技术问题的话,十个里面有两三个都是StackOverflow上面的,它们基本都可以很好地解决你的问题。Stack Overflow满足那些活跃的用户,而没有账号的用户会不断的加入进来,找到他们满意的答案,并且点击相关的广告。确实要为Stack Overflow以及他们出色的商业模式竖起大姆指。

IntelliJ

Eclipse通常是个不错的选择(还是免费的),但IntelliJ IDEA,还有phpStorm,在各方面都更为出色,你可以随时免费试用它的社区版,但用过之后估计你就不想再换回来了。一段时间后,你最终肯定是选择旗舰版的。

PostgreSQL

PostgreSQL声称自己是世界上最先进的开源数据库,它确实是优雅易用,符合标准的数据库之一,能让你在其中对SQL的使用感到很有兴趣。

我们相信在几年时间内,PostgreSQL很有可能不仅在语法上击败商业数据库,同时在性能上也能超越它们。如果你需要一个基于SQL的数据存储系统,PostgreSQL将是很好的一个选择,它的每一个特性都是那么的实用。我们来期待PostgreSQL的佳音吧。

Less CSS

当你第一次使用Less CSS的时候,你肯定会说为什么CSS不是这样的呢?你说的对,CSS就应该像它这样,在这里,你原来所讨厌CSS的那些理由(重复,冗余,复杂)全都不见了。作为一个不太关注html5,布局这些东西的老土的HTML-table的忠实粉丝,用了Less CSS之后我感觉自己可以写出更多花哨的网站来了!我已经离不开Less CSS了。

参考技术A 查找:这是一类通用问题,可以理解为
查找文件:Everything,感觉很好用,制定好快捷键后基本不用再打开我的电脑了;
查找源代码:SourceInsight+Grep, 这两个工具可以直接搞定90%的代码查找任务;
程序编写/查看:
编辑器:windows下用GVIM以及vim plugin for vs,linux当然是vim;
小程序,写了编扔的,例如要求对一个文件某些行做一些正则操作啊,以及多文件等,这些东西不必要用C#/C++等,直接AWK搞定;
Notepad++作为查看文本是GVIM的良好补充;
工具箱,推荐GNUWIN,当然windows下的powershell也是很强大的;
熟悉工作环境的快捷键,例如我的环境是windows:

win键+E:打开我的电脑;
win键+R:打开运行窗口;
win键+数字:切换任务栏上对应的程序;
win键+向上箭头:最大化当前窗口(向下最小化窗口);
win键+左箭头:窗口最大化到屏幕左侧(类似可用右箭头);
win键+P:选择演示模式(投影灯);
win键+shift+向左(右):将窗口从一个监视器移到另外一个监视器;
Alt+Tab:切换程序;本回答被提问者采纳

当源代码不可用时,有啥好的分析工具可以使用?

【中文标题】当源代码不可用时,有啥好的分析工具可以使用?【英文标题】:What's a good profiling tool to use when source code isn't available?当源代码不可用时,有什么好的分析工具可以使用? 【发布时间】:2009-02-11 14:15:42 【问题描述】:

我有一个大问题。我的老板对我说他想要两个“神奇的黑匣子”: 1-接收微处理器的东西,例如输入和返回,例如输出,MIPS和/或MFLOPS。 2- 接收 c 代码的东西,比如输入和返回,比如输出,可以在性能方面表征代码的东西(比如 uP 在一段时间内执行代码必须具有的必要 MIPS)。

所以我认为第一个“黑匣子”可能是 EEMBC 或 SPEC 的基准……不同的 uP,返回每个 uP 的 MIPS/MFLOPS 的基准相同。第一个问题没问题(我希望)

但是第二个……第二个黑匣子是我的噩梦……我发现唯一的事情是使用分析工具,但我问了一个特定的分析工具。 有没有人知道一个分析工具,它可以像输入一样具有简单的 c 代码,并像输出一样向我提供我的 c 代码的性能特征(或调用某些汇编指令的时间)?

真正的问题是我们必须为特定 c 代码选择正确的 uP...但是我们想要为我们的 c 代码量身定制的 uP...所以如果我们知道 MIPS(以及 uP 的架构结构,内存结构...) 以及我们的代码需要什么

谢谢大家

【问题讨论】:

【参考方案1】:

我必须同意亚当的观点,尽管我会更客气一点。编译器优化仅在热点代码中很重要,即 a) 不调用函数和 b) 占用大量时间的紧密循环。

在积极的方面,这是我的建议:

在处理器上运行 C 代码,任何处理器。在该处理器上,找出最耗时的。

您可以为此使用分析器。我更喜欢的简单方法是在调试器下运行它并手动停止它,多次(如 10 次),每次都记下调用堆栈。我想代码中有些东西占用了很大一部分时间,比如 50%。如果是这样,您将看到它在大约该百分比的样本上执行该操作,因此您不必猜测它是什么。

如果某些特殊处理器可以帮助该活动,请尝试使用该处理器。

重要的是不要猜测。如果你说“我认为这需要一个 DSP 芯片”,或者“我认为它需要一个多核芯片”,那都是猜测。猜测可能是正确的,但可能不是。可能是您永远猜不到的最耗时的事情,例如内存管理或 I/O 格式化。性能问题很擅长瞒着你。

【讨论】:

【参考方案2】:

没有。如果有人制作了一个可以分析(非平凡的)源代码并告诉您其性能特征的工具,那将是常见的地方。即每个人都会使用它。

在针对特定目标架构编译源代码之前,您将无法确定其整体性能。例如,一个针对 n 个处理器的并行编译器可能能够将 O(n^2) 算法更改为 O(n) 之一。

【讨论】:

亲爱的 Mitch Wheat,非常感谢,但我会提出一个新问题...当我寻找分析工具时,我已经看到了 simics...是吗?我认为这个工具可以很好地获取有关不同 uP 性能的一些信息......你认为 samwe 与否?在此先感谢马尔科【参考方案3】:

你找不到工具来做你想做的事。

您唯一的选择是交叉编译代码并在模拟器上针对您正在运行的体系结构对其进行分析。分析高级代码的问题是编译器进行了一系列非平凡的优化,您需要知道特定的编译器是如何做到的。

这听起来很愚蠢,但为什么要让你的代码适合一个 uP 和一个 uP 适合你的代码呢?如果您正在编写信号处理,请购买 DSP。如果你正在构建一个 SCADA 盒子,那么看看 Atmel 或 ARM 的东西。您是否正在构建具有用户界面的通用设备?查看 PPC 或 X86 兼容的东西。

简单地说,选择一个适合并提供您需要的功能的血腥架构。选择处理器之前的优化是迟缓的(非常粗略地解释 Knuth)。

将架构修复为大致合适的东西,大致计算出处理要求(您可以手动草拟一个估计值,这在查看 C 代码时总是太高),然后购买一个匹配的 uP。

【讨论】:

以上是关于有啥好的习惯和工具可以帮助程序员提高工作效率的主要内容,如果未能解决你的问题,请参考以下文章

同时管理近百个科研项目的进度,有啥好的软件?

有啥好的工具可以重构 Perl Web 代码吗? [关闭]

有哪些可以极大提高工作效率的办公神器值得推荐?

当源代码不可用时,有啥好的分析工具可以使用?

针对c语言的程序,有啥好的测试工具

如何做好企业账号自营,有啥提效工具吗?