让我切入追逐......
一方面,给出的许多编程建议(这里和其他地方)都强调了这样一种观念,即代码应该始终尽可能可读,并且(几乎?!)任何修饰成本.另一方面,有很多慢的网站(至少其中一个,我从个人经验中知道).
显然,往返和数据库访问是Web开发人员应始终牢记的问题.但是,对于我来说,可读性与不能做什么之间的权衡,因为它减缓了事情的速度,这一点尚不清楚.
问题是 -
1.还有什么?
2.有一个规则(最好是简单的,但可能很一般)应该坚持,以确保他的代码不会减慢太多的东西?
一般最佳实践以及具体建议将不胜感激.基于经验的建议将特别受到赞赏.
谢谢.
编辑:一点澄清:一般性能建议不难发现.那不是我想要的.我问的是两件事情.1.在尝试尽可能让我的代码可读时,我应该什么时候停下来说:"现在我的表现太差了".
2.很少,不太知名的事情 - 比选择全部更快地选择一列(感谢Otávio)...
再次感谢!
我有一个Perl模块(Module.pm)初始化一些变量,其中一些我想导入($ VAR2,$ VAR3)到其他可能在执行期间加载的子模块.
我目前设置Module.pm的方式如下:
package Module;
use warnings;
use strict;
use vars qw($SUBMODULES $VAR1 $VAR2 $VAR3);
require Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw($VAR2 $VAR3);
sub new {
my ($package) = @_;
my $self = {};
bless ($self, $package);
return $self;
}
sub SubModules1 {
my $self = shift;
if($SUBMODULES->{'1'}) { return $SUBMODULES->{'1'}; }
# Load & cache submodule
require Module::SubModule1;
$SUBMODULES->{'1'} = Module::SubModule1->new(@_);
return $SUBMODULES->{'1'};
}
sub SubModules2 {
my $self = shift;
if($SUBMODULES->{'2'}) { return $SUBMODULES->{'2'}; …Run Code Online (Sandbox Code Playgroud) 我安装了Umbraco 4.5,运行正常.有一件事我不能去工作,是404.当它点击一个不感兴趣的页面时,它显示默认的IIS7 404页面,而不是内置的umbraco 404页面.
所以我认为这是我必须改变的一个环境 - 但是哪个?
我有几个低质量的pdf.我想使用OCR - 更精确的Ocropus 从中获取文本.要使用,我首先使用ImageMagick - 一个命令行工具将pdf转换为图像 - 将这些pdf转换为jpg或png.
然而,ImageMagick会产生非常低质量的图像,而Ocropus几乎无法识别任何内容.我想了解处理低质量pdf的最佳参数是什么,以便为OCR提供尽可能高质量的图像.
我找到了这个页面,但我不知道从哪里开始.
我有一个Wordpress博客,唯一的用户输入是评论系统.我想完全避免垃圾评论.Wordpress附带Akismet,但我也可以使用Captcha.我应该使用哪种插件/方法?
我的客户不介意用户输入验证字符串来发表评论.如果我采用Akisment或Captcha,我能完全控制垃圾邮件吗?
是否可以使用Akismet或Captcha进行简单的4位数验证?如果没有,那么请同时推荐一个只能进行4位验证的插件/方法.
CodeRush的付费版本具有一个功能,您可以在代码中"删除标记",然后再返回到它们.它们像堆栈一样工作,因此您可以删除标记(跨多个文件)并以与删除它们相反的顺序返回它们.
是否有开发工作室扩展,做任何类似的事情?
我在维基百科上读到Cyclone编程语言是C编程语言的安全方言,因此请考虑以下C代码.
int strlen(const char *s)
{
int iter = 0;
if (s == NULL) return 0;
while (s[iter] != '\0') {
iter++;
}
return iter;
}
Run Code Online (Sandbox Code Playgroud)
此函数假定传入的字符串由NUL('\ 0')终止.但是如果我们传递这样的字符串,
char buf[] = {'h','e','l','l','o','!'}
Run Code Online (Sandbox Code Playgroud)
它会导致strlen迭代通过不一定与字符串s相关联的内存.所以在Cyclone中还有另一个版本的代码
int strlen(const char ? s)
{
int iter, n = s.size;
if (s == NULL) return 0;
for (iter = 0; iter < n; iter++, s++) {
if (*s == '\0') return iter;
}
return n;
}
Run Code Online (Sandbox Code Playgroud)
我可以在Visual Studio中使用Cyclone,还是必须下载新的编译器?
有没有HtmlHelper人为ASP.NET MVC实现生成这些的扩展方法呢?可以使用接受的重载来执行此操作htmlAttributes,例如:
Html.TextBoxFor(model => model.Foo, new { type="number", min="0", max="100" })
Run Code Online (Sandbox Code Playgroud)
但那并不像以下那样好(或类型安全):
Html.NumericInputFor(model => model.Foo, min:0, max:100)
Run Code Online (Sandbox Code Playgroud) 常见情况:
一般来说,什么是好的做法.我总是感到困惑.首先,将所有内容作为引用传递似乎是一致的,但是不可能将Literals作为引用传递或将NULL作为引用传递.
类似地,将所有内容作为指针似乎都很好,但是我必须担心指针可能指向NULL并检查该函数开头的那些条件.
你认为以下片段是好的吗?
#include <iostream>
#include <vector>
#include <map>
#include <string>
#include <tr1/memory>
#include <algorithm>
using namespace std;
using namespace std::tr1;
int main(){
map<string, shared_ptr<vector<string> > > adjacencyMap;
vector<string>* myFriends = new vector<string>();
myFriends->push_back(string("a"));
myFriends->push_back(string("v"));
myFriends->push_back(string("g"));
adjacencyMap["s"] = shared_ptr<vector<string> >(myFriends);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
谢谢Ajay
用Python编写代码.有一段代码,想知道它是否可以更优雅地完成......
# Statistics format is - done|remaining|200's|404's|size
statf = open(STATS_FILE, 'r').read()
starf = statf.strip().split('|')
done = int(starf[0])
rema = int(starf[1])
succ = int(starf[2])
fails = int(starf[3])
size = int(starf[4])
...
Run Code Online (Sandbox Code Playgroud)
这继续下去.我想知道在将行拆分成列表之后是否有更好的方法将每个列表分配到var中.我有近30行为vars分配索引值.只是想了解更多关于Python的信息......
.net ×1
asp.net-mvc ×1
c++ ×1
captcha ×1
ghostscript ×1
html-helper ×1
html-input ×1
html5 ×1
iis ×1
imagemagick ×1
linux ×1
oop ×1
pdf ×1
performance ×1
perl ×1
perl-module ×1
php ×1
python ×1
umbraco ×1
web ×1
wordpress ×1