我的问题在于文件复制性能.我们有一个媒体管理系统,需要在文件系统上大量移动文件到不同的位置,包括同一网络上的Windows共享,FTP站点,AmazonS3等.当我们都在一个Windows网络上时,我们可以使用System.IO.File.Copy(源,目标)复制文件.由于我们所拥有的很多次都是输入流(如MemoryStream),我们尝试抽象复制操作以获取输入流和输出流,但我们看到了大量的性能下降.下面是一些用于复制文件以用作讨论点的代码.
public void Copy(System.IO.Stream inStream, string outputFilePath)
{
int bufferSize = 1024 * 64;
using (FileStream fileStream = new FileStream(outputFilePath, FileMode.OpenOrCreate, FileAccess.Write))
{
int bytesRead = -1;
byte[] bytes = new byte[bufferSize];
while ((bytesRead = inStream.Read(bytes, 0, bufferSize)) > 0)
{
fileStream.Write(bytes, 0, bytesRead);
fileStream.Flush();
}
}
}
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么这比File.Copy执行速度慢得多?我能做些什么来提高性能吗?我是否只需要使用特殊逻辑来查看我是否从一个窗口位置复制到另一个窗口位置 - 在这种情况下我将只使用File.Copy而在其他情况下我将使用流?
请告诉我您的想法以及是否需要其他信息.我尝试了不同的缓冲区大小,似乎64k缓冲区大小对于我们的"小"文件来说是最佳的,256k +对于我们的"大"文件来说是一个更好的缓冲区大小 - 但无论哪种情况下它都比File.Copy执行得更糟糕( ).提前致谢!
以下是我的代码摘录:
public class AllIntegerIDs
{
public AllIntegerIDs()
{
m_MessageID = 0;
m_MessageType = 0;
m_ClassID = 0;
m_CategoryID = 0;
m_MessageText = null;
}
~AllIntegerIDs()
{
}
public void SetIntegerValues (int messageID, int messagetype,
int classID, int categoryID)
{
this.m_MessageID = messageID;
this.m_MessageType = messagetype;
this.m_ClassID = classID;
this.m_CategoryID = categoryID;
}
public string m_MessageText;
public int m_MessageID;
public int m_MessageType;
public int m_ClassID;
public int m_CategoryID;
}
Run Code Online (Sandbox Code Playgroud)
我试图在我的main()函数代码中使用以下内容:
List<AllIntegerIDs> integerList = new List<AllIntegerIDs>();
/* some code here that is …Run Code Online (Sandbox Code Playgroud) 我使用多种语言和一些平台开发应用程序.从我正在阅读的内容来看,IPv6将在未来5到10年内成为主流,并且一些ISP甚至提供与IPv6互联网的直接连接.在我的专用网络上,所有计算机都具有双栈连接,并在可能的情况下使用IPv6进行相互通信.
我的问题是:我的新应用程序是否应该支持IPv6?如果是这样,我需要考虑哪些事情?现在支持IPv6有什么缺点吗?
我不知道这是否会有所帮助或伤害,但这里有一些更具体的细节可能会指出一些答案:
我的应用程序将在Windows/Linux/Mac上运行,它将包含为每个平台单独编写的特定于平台的组件,以及以解释语言编写的通用"核心"组件.
我的应用程序应该能够找到在三个平台中的任何一个上运行的自身的其他实例,并且支持任何两台机器之间的TCP和UDP.
我正在忙着编写一个在windows下运行的应用程序
保存临时文件的正确位置在哪里?
我想在页面加载时在灯箱中显示隐藏div的内容.
我怎么能用彩盒做到这一点?
我不明白的是:
我需要使用他们的CSS文件吗?哪一个,它在哪里?
如何在页面加载时使灯箱亮起?
我试过这个但没有运气:
$(document).ready(function(){
$("#div_id_i_want_to_show").colorbox({width:"50%", inline:true});
});
Run Code Online (Sandbox Code Playgroud) 我有一个大表(TokenFrequency),其中有数百万行.TokenFrequency表的结构如下:
表 - TokenFrequency
我的目标是选择其中两个源具有相同令牌的所有行.例如,如果我的表看起来像这样:
id --- source --- token --- count
1 ------ 1 --------- dog ------- 1
2 ------ 2 --- ------猫-------- 2
3 ------ 3 ---------猫-------- 2
4 ------ 4 ---------猪-------- 5
5 ------ 5 ---------动物园------- 1
6 --- --- 5 --------- cat -------- 1
7 ------ 5 ---------猪-------- 1
我想要一个SQL查询给我源1,源2和计数的总和.例如:
source1 --- source2 --- token --- count
---- 2 ----------- 3 --------- cat -------- …
我有一个C库,需要一个临时缓冲区用于临时空间.我正在考虑将直接字节缓冲区的地址传递给它.
是否允许VM在最终释放缓冲区之前重新定位缓冲区?在JNI帧消失后,本机库将保持指针.我的理解是无法缓存JNI本地对象引用,因为VM可能在GC期间重定位它们.这适用于缓冲区地址吗?
我知道如果我在Java中分配缓冲区然后让缓冲区对象超出范围,VM将释放缓冲区内存.如果我使用NewDirectByteBuffer在本机代码中创建一个新的缓冲区,它的职责是释放后备内存?
如果我使用NewDirectByteBuffer在本机代码中创建一个新缓冲区并且直接缓冲区已经使用了一个地址,会发生什么?记忆会被双重释放吗?VM引用是否会计算内存块,并在引用它的最后一个缓冲区被垃圾收集时尝试释放它?
我正在尝试编写一个循环来遍历无序列表中的每个锚点,并对锚点内的图像执行操作.标记看起来像这样:
<ul>
<li><a href="#"><img src="image.png" /></a></li>
<li><a href="#"><img src="image.png" /></a></li>
<li><a href="#"><img src="image.png" /></a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
任何一个锚点上的单击事件都应该触发循环.到目前为止我有以下JS:
$("a").click(function(){
$("a").each(function(){
if (THIS IS THE CLICKED ON ANCHOR == TRUE) {
// SKIP THIS ITEM
}
else {
$("img",this).actions();
};
});
});
Run Code Online (Sandbox Code Playgroud)
我想我只需要跳过该项目的部分,如果它是点击锚点,但我不会采用不同的方法.
我正在使用jQuery 1.3.2.
谢谢!
c# ×2
jquery ×2
performance ×2
windows ×2
architecture ×1
colorbox ×1
for-loop ×1
inner-join ×1
ipv6 ×1
java ×1
lightbox ×1
list ×1
mysql ×1
networking ×1
nio ×1
php ×1
qt ×1
sql ×1
vb.net ×1