对于在经常被调用的函数中使用的变量以及在黑莓上的J2ME中实现的变量(如果改变了某些东西,你能解释一下)吗?
class X {
int i;
public void someFunc(int j) {
i = 0;
while( i < j ){
[...]
i++;
}
}
}
Run Code Online (Sandbox Code Playgroud)
要么
class X {
static int i;
public void someFunc(int j) {
i = 0;
while( i < j ){
[...]
i++;
}
}
}
Run Code Online (Sandbox Code Playgroud)
要么
class X {
public void someFunc(int j) {
int i = 0;
while( i < j ){
[...]
i++;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我知道如何访问静态类和非静态类变量,但我不知道它会影响速度.我还记得在某处读取函数变量可以更快地访问,但我不知道为什么以及在哪里读到它.
问题的背景:游戏中的一些绘画功能被过度调用,即使在较大的循环中使用变量时访问时间的微小差异也会影响整体性能.
更新
我设置了一个小测试(下面的代码)并在真实设备上运行它以查看结果是什么样的.我对一个循环10000次访问变量的函数运行了10000次调用.
我想要一个共享文件夹,其中包含子文件夹内的html页面访问的图像.(子文件夹)
我正在使用以下代码在Linux/OSX上为Python库隐藏stderr我默认不控制写入stderr:
f = open("/dev/null","w")
zookeeper.set_log_stream(f)
Run Code Online (Sandbox Code Playgroud)
是否有一个简单的跨平台替代/ dev/null?理想情况下,它不会消耗内存,因为这是一个长时间运行的过程.
同样旧的相同旧,我的JavaScript在IE中运行正常,但不适用于Firefox.我已经按照所有表格,检查了所有论坛和回复,以及我编写的内容应该有效,但事实并非如此.Firebug将值显示为"未定义".
这就是我所拥有的; 它从一个更大的应用程序缩小,但它显示了同样的问题:
<html>
<head>
<script type="text/javascript">
function show_alert(evt)
{
if( !evt )
evt = window.event;
var eSrc;
if( evt.srcElement )
eSrc = evt.srcElement;
else
eSrc = evt.target;
if( eSrc.tableisloaded == "showAlert" )
alert("alert box: " + eSrc.name + "|" + eSrc.type);
}
</script>
</head>
<body>
<input type="button" name="clickme" tableisloaded="showAlert"
onclick="show_alert(event);" value="Show alert box" />
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
当我在IE中运行它时,我收到警报,这意味着它正在查找"tableisloaded"参数.Firebug并没有显示出一切.
那么我做错了什么,是否有办法获取参数?我需要将其更改为参数(onclick="show_alert(event,"showAlert");)吗?我希望不要因为它需要重写大量代码.
谢谢
如果在创建文件时出现问题,我一直在写一个临时文件,然后移动到目的地.就像是:
var destination = @"C:\foo\bar.txt";
var tempFile = Path.GetTempFileName();
using (var stream = File.OpenWrite(tempFile))
{
// write to file here here
}
string backupFile = null;
try
{
var dir = Path.GetDirectoryName(destination);
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
Util.SetPermissions(dir);
}
if (File.Exists(destination))
{
backupFile = Path.Combine(Path.GetTempPath(), new Guid().ToString());
File.Move(destination, backupFile);
}
File.Move(tempFile, destination);
if (backupFile != null)
{
File.Delete(backupFile);
}
}
catch(IOException)
{
if(backupFile != null && !File.Exists(destination) && File.Exists(backupFile))
{
File.Move(backupFile, destination);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是在这种情况下新的"bar.txt"不会从"C:\ foo"目录继承权限.然而,如果我直接在"C:\ foo"中通过explorer/notepad等创建文件,则没有问题,所以我相信权限在"C:\ foo"上正确设置.
找到移动文件夹时 …
我目前正在代码库中工作,其中IPv4地址表示为指针u_int8.等于运算符的实现方式如下:
bool Ipv4Address::operator==(const u_int8 * inAddress) const
{
return (*(u_int32*) this->myBytes == *(u_int32*) inAddress);
}
Run Code Online (Sandbox Code Playgroud)
这可能是禁食的解决方案,但它会导致GCC编译器警告:
ipv4address.cpp:65: warning: dereferencing type-punned pointer will break strict-aliasing rules
Run Code Online (Sandbox Code Playgroud)
如何在不破坏严格别名规则且不丢失性能点的情况下正确地重写比较?
我考虑使用其中一个memcmp或这个宏:
#define IS_EQUAL(a, b) \
(a[0] == b[0] && a[1] == b[1] && a[2] == b[2] && a[3] == b[3])
Run Code Online (Sandbox Code Playgroud)
我认为宏是最快的解决方案.
您有什么推荐的吗?
更新
我刚刚阅读文章压缩memcmp用法的性能,解释了编译器(Visual Studio,但也许还有GCC)如何优化!memcmp(..)调用.
我试图在PHP中找到关于可链接OOP对象的一个很好的介绍,但还没有任何好的结果.
这样的事情怎么办?
$this->className->add('1','value');
$this->className->type('string');
$this->classname->doStuff();
Run Code Online (Sandbox Code Playgroud)
甚至: $this->className->add('1','value')->type('string')->doStuff();
非常感谢!
我有表格上传文件.要上传的文件实际上是图片和视频,因此它们可能非常大.我有基于标题的逻辑,首先1KB可以确定其余的是否会被处理或立即被拒绝.在后一种情况下,我想将客户端重定向到错误页面,而不必等待上传完成.
情况是,只是在POST完成之前发送响应似乎不起作用.重定向被忽略,如果我关闭连接,浏览器会抱怨"Connection reset by peer"错误.
所以问题是:甚至可以在纯HTTP中实现这一点(在客户端没有JavaScript),如果是这样,怎么样?
只是一个简单的问题(它被标记为社区维基)
根据经验,您是否发现在使用ExtJS时使用XML或JSON评估您的ajax响应更容易?ExtJs的哪种格式更适合处理?
我在他们之间挣扎.
谢谢!