我试图比较VB.NET中的两个长字节数,并遇到了障碍.比较两个50兆字节的文件大约需要两分钟,所以我显然做错了什么.我在一台拥有大量内存的x64机器上,所以那里没有问题.这是我目前使用的代码,想要改变.
_Bytes并且item.Bytes是要比较的两个不同的数组,并且已经是相同的长度.
For Each B In item.Bytes
If B <> _Bytes(I) Then
Mismatch = True
Exit For
End If
I += 1
Next
Run Code Online (Sandbox Code Playgroud)
我需要能够尽可能快地比较可能数百兆字节甚至可能是一千兆字节或两千兆字节的文件.任何能够更快地完成此任务的建议或算法?
Item.bytes是从数据库/文件系统中取出的对象,它返回比较,因为它的字节长度与用户想要添加的项匹配.通过比较两个阵列,我可以确定用户是否已经向DB添加了新内容,如果没有,那么我可以将它们映射到另一个文件而不会浪费硬盘空间.
[更新]
我将数组转换为Byte()的局部变量,然后进行相同的比较,相同的代码并在一秒钟内运行(我必须对其进行基准测试并将其与其他人进行比较),但如果你对本地做同样的事情变量和使用通用数组变得非常慢.我不确定为什么,但它为我提出了更多关于数组使用的问题.
我已经开始阅读算法了,我一直想知道,当处理相同类型的原语时,这是更昂贵的操作,分配还是比较?语言之间的差异很大吗?
使用下一个代码更容易解释(顺便说一下,这是错误的):
$selectGenre_sql = 'SELECT genreID FROM genres WHERE dbGenre = ?';
if ($stmt->prepare($selectGenre_sql)) {
// bind the query parameters
$stmt->bind_param('s', $genre);
// bind the results to variables
$stmt->bind_result($genres);
// execute the query
$stmt->execute();
$genre = array();
while ($stmt->fetch()) {
$genre[] = $genres;
}
}
Run Code Online (Sandbox Code Playgroud)
当'dbGenre'等于'$ genre'时,上面的代码从'genreID'获取值.然后将结果存储在一个数组中.但我不行.为什么?我认为因为'$ genre'是一个数组,所以我需要循环它以便每次从'genreID'获得不同的值.
$ genre是一个包含电影类型的枚举数组,例如:
[0] =>动作[1] =>冒险[2] =>幻想
我需要比较de值(比如'Action')
'genres'表包含两列:genreID(INT)和dbGenre(VARCHAR)
我只需要每个genreID(这是一个数字)....让我们说..当dbGenre等于Action时,然后将genreID存储在array1中,然后循环$ genre数组以获取下一个值的genreID,再次将它存储在array1中
我该怎么解决?我是编程的新手,所以请尽可能详细.谢谢!!
我安装了Visual Studio Team System 2008体系结构版本:9.0.30729.1 SP和Microsoft Net Framework 3.5 SP1.
当我要添加新项目时,我找不到ADO.NET实体数据模型模板.
发生了什么?
谢谢!
我需要将一个函数作为参数传递给另一个函数,然后从函数中调用传递的函数...这可能更容易让我在代码中解释..我基本上想做这样的事情:
function ($functionToBeCalled)
{
call($functionToBeCalled,additional_params);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点..我使用的是PHP 4.3.9
谢谢!
我正在寻找一种基于密钥对NameValueCollection进行排序的简单方法 - 但它不应该是性能很重要.
我正在接管以前开发人员的一些应用程序.当我通过Eclipse运行应用程序时,我看到内存使用情况和堆大小增加了很多.经过进一步调查,我发现他们正在循环中创建一个对象以及其他东西.
我开始经历一些清理工作.但是我经历的越多,我就越想问"这实际上会做什么吗?"
例如,不是在上面提到的循环之外声明变量而只是在循环中设置它的值......它们在循环中创建了对象.我的意思是:
for(int i=0; i < arrayOfStuff.size(); i++) {
String something = (String) arrayOfStuff.get(i);
...
}
Run Code Online (Sandbox Code Playgroud)
与
String something = null;
for(int i=0; i < arrayOfStuff.size(); i++) {
something = (String) arrayOfStuff.get(i);
}
Run Code Online (Sandbox Code Playgroud)
我不正确地说底部循环更好吗?也许我错了.
另外,在上面的第二个循环之后,我将"某些东西"设置为null?这会清除一些记忆吗?
在任何一种情况下,我可以遵循哪些良好的内存管理最佳实践,这将有助于在我的应用程序中保持低内存使用率?
更新:
到目前为止,我感谢每个人的反馈.但是,我并没有真正询问上面的循环(尽管根据你的建议,我确实回到了第一个循环).我正在努力获得一些我可以留意的最佳实践."当你完成使用Collection时,清除它"的界限.我真的需要确保这些应用程序不会占用太多内存.
有人知道是否实际存在一个包装器或移植的库来访问Python上的Unix动态链接器?
我有一个C#应用程序,它使用Visual Studio 2005中的内置MSI构建器.
在使用MSI(通过CD)将应用程序部署到目标计算机上之后,我启动桌面快捷方式(作为特权用户),程序按预期运行.但是,如果我以非特权用户身份退出然后重新登录并尝试运行该应用程序,则计算机会开始寻找MSI,因为它想要修复/配置它.当然这会失败,因为它无法再找到MSI.
但是,我可以浏览到Program Files中的应用程序文件夹,并将快捷方式复制到桌面并运行完全正常.
我该如何解决这个问题?我已经改变了许多设置试图绕过这个没有运气.
编辑:我有InstallAllUsers = True set.
来自C++背景我必须掌握Java世界及其框架的复杂性.看一下DI的弹簧框架,我发现我很难相信我必须制作每个将受DI公众影响的setter功能.这种要求是否违反了信息隐藏原则?
当然我希望spring能够设置我的类的一些私有部分,但我当然不希望每个客户端类都能够做同样的事情.
我在这里错过了什么?