主题明确说明了什么,一种内存有效的方法来计算大小可变的文件的sha256哈希?我也愿意妥协使用更多的内存来加快计算速度。
我有一个运行速度非常慢的程序(即使在发布时也需要20秒)所以,想要修复它,我尝试使用Visual Studio内置的分析器.但是,当我运行启用了性能分析的程序时,它会在不到一秒的时间内完成.这使得很难找到瓶颈.我会发布代码,但它很长.有没有明显的或不那么明显的原因导致这种情况发生?
编辑:好的,所以我把问题缩小到一堆free()调用.当我将它们注释掉时,程序运行的时间与启用性能分析的时间相同.但现在我有内存泄漏: - /
什么需要最多的CPU:
int foo = 3;
Run Code Online (Sandbox Code Playgroud)
或者将它转换为unsigned int?
unsigned int foo = 3;
Run Code Online (Sandbox Code Playgroud) 似乎如果你在全局WH_KEYBOARD_LL钩子中调用ToAscii()或者ToUnicode()同时按下死键,它将被"销毁".
例如,假设您已将Windows中的输入语言配置为西班牙语,并且您希望在程序中键入带重音的字母á.通常情况下,您按下单引号键(死键),然后按字母"a",然后在屏幕上显示重音á,如预期的那样.
但是,如果您调用ToAscii()或ToUnicode()使用低级键盘挂钩功能,则此功能无效.看来,死键被破坏,所以没有重音字母á显示了在屏幕上.删除对上述函数的调用可以解决问题...但不幸的是,我需要能够调用这些函数.
我用谷歌搜索了一段时间,虽然很多人似乎都有这个问题,但没有提供好的解决方案.
任何帮助将非常感激!
编辑:我正在调用ToAscii()将我的LowLevelKeyboardProc钩子函数中收到的虚拟键代码和扫描代码转换为将在屏幕上显示给用户的结果字符.
我尝试过MapVirtualKey(kbHookData->vkCode, 2),但这并不像"完整"那样功能ToAscii(); 例如,如果你按Shift + 2,你将得到'2',而不是'@'(或者Shift + 2将为用户的键盘布局/语言产生).
ToAscii() 是完美的...直到按下死键.
EDIT2:这是钩子函数,删除了无关信息:
LRESULT CALLBACK keyboard_LL_hook_func(int code, WPARAM wParam, LPARAM lParam) {
LPKBDLLHOOKSTRUCT kbHookData = (LPKBDLLHOOKSTRUCT)lParam;
BYTE keyboard_state[256];
if (code < 0) {
return CallNextHookEx(keyHook, code, wParam, lParam);
}
WORD wCharacter = 0;
GetKeyboardState(&keyboard_state);
int ta = ToAscii((UINT)kbHookData->vkCode, kbHookData->scanCode,
keyboard_state, &wCharacter, 0); …Run Code Online (Sandbox Code Playgroud) 我知道我可以从https://android.googlesource.com访问android源代码,但如果我只知道软件包和android类的名称,那么很难选择正确的git repo.
是不是有办法在https://android.googlesource.com中找到文件?
我正在使用free来释放在递归函数中为一堆临时数组分配的内存.我会发布代码,但它很长.当我注释掉这些free()调用时,程序运行不到一秒钟.但是,当我使用它们时,程序运行大约需要20秒.为什么会发生这种情况,如何解决?这就像100左右的MB所以我宁愿不要只留下内存泄漏.
此外,当我运行包含所有启用了性能分析的free()调用的程序时,它会在不到一秒的时间内运行.我不知道这会产生什么影响,但确实如此.
在仅使用一些free()调用之后,似乎有一些特别会导致程序变慢.其余的似乎没有效果.
好的......这是所要求的代码:
void KDTree::BuildBranch(int height, Mailbox** objs, int nObjects)
{
int dnObjects = nObjects * 2;
int dnmoObjects = dnObjects - 1;
//Check for termination
if(height == -1 || nObjects < minObjectsPerNode)
{
//Create leaf
tree[nodeIndex] = KDTreeNode();
if(nObjects == 1)
tree[nodeIndex].InitializeLeaf(objs[0], 1);
else
tree[nodeIndex].InitializeLeaf(objs, nObjects);
//Added a node, increment index
nodeIndex++;
return;
}
//Save this node's index and increment the current index to save space for this node
int thisNodeIndex = nodeIndex;
nodeIndex++;
//Allocate memory for split …Run Code Online (Sandbox Code Playgroud) 我想重定向以以下内容开头的地址:
en.example.com/somefile.php
Run Code Online (Sandbox Code Playgroud)
至:
example.com/somefile.php?language=en
Run Code Online (Sandbox Code Playgroud)
在lighttpd中使用mod_rewrite模块.到现在为止我得到了这个:
$HTTP["host"] =~ "^en\.(.*)\.com$" {
url.rewrite-once = (
"^/(.*)"
=>
"/$1?language=en"
)
}
Run Code Online (Sandbox Code Playgroud)
但这似乎并没有起作用.该怎么做才能使这项工作?
当我想在Unix中执行一些shell脚本时(让我们说我在脚本所在的目录中),我只需输入:
./someShellScript.sh
Run Code Online (Sandbox Code Playgroud)
当我想"获取"它时(例如在当前shell中运行它,而不是在新的shell中),我只需用"."键入相同的命令.(或者使用"source"命令等效)之前:
. ./someShellScript.sh
Run Code Online (Sandbox Code Playgroud)
而现在是棘手的部分.当我想在当前目录中执行"多个" shell脚本(假设所有带.sh后缀的文件)时,我输入:
find . -type f -name *.sh -exec {} \;
Run Code Online (Sandbox Code Playgroud)
但"我应该使用什么命令来"源"目录中的多个shell脚本"?
到目前为止我试过这个但是它不起作用:
find . -type f -name *.sh -exec . {} \;
Run Code Online (Sandbox Code Playgroud)
它只是抛出这个错误:
find: `.': Permission denied
Run Code Online (Sandbox Code Playgroud)
谢谢.
我正在考虑开设一个项目来为Android 2.0创建一个i-phone虚拟机(阅读motorola droid)之前我有一些问题:
我错过了一个已经存在的吗?
Droid的Arm Cortex A8可以降低到550MHz(感谢维基百科)处理I-Phone抽象层吗?
性能方面,最好的办法是用C++编写应用程序,但为了系统的健康,将iphone vm放在dalvik vm之上会更好吗?哪种方法更好,为什么.
我正在研究一款需要高性能的视频游戏,所以我试图设置一个好的记忆策略或游戏的特定部分,即游戏"模型",即游戏表现.我有一个包含整个游戏表示的对象,里面有不同的管理器,以保持表示符合游戏规则.每个游戏实体当前都是由特定类型的工厂生成的,所以我有几个工厂允许我按照自己的意愿隔离和更改这些实体的内存管理.
现在,我正在选择这两种选择之间:
现在,我对A有了一些现实世界的经验,所以我对B没有经验,并希望对这些解决方案有一些建议,对于一个长寿项目.对于长寿项目来说,哪种解决方案似乎更好?为什么?(注意:在这种情况下,确实需要一个池,因为游戏模型也用于游戏编辑,所以会有很多小对象的分配/释放).
编辑澄清:如果(我还不清楚)我正在使用C++
c++ ×5
c ×3
android ×2
diacritics ×1
hash ×1
iphone ×1
java ×1
lighttpd ×1
memory ×1
mod-rewrite ×1
multilingual ×1
optimization ×1
pool ×1
shell ×1
unicode ×1
unix ×1
windows ×1