Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net Microsoft用于复制文件的官方缓冲区大小是多少?_.net_Windows - Fatal编程技术网

.net Microsoft用于复制文件的官方缓冲区大小是多少?

.net Microsoft用于复制文件的官方缓冲区大小是多少?,.net,windows,.net,Windows,我想知道在我正在开发的.Net拆分器/合并应用程序中使用哪一个缓冲区大小值是合适的,因为为了改进某些FileStream,我将设置与Microsoft内部用于Windows中的复制操作相同的缓冲区大小 我知道这些信息是存在的,而且是公开的,因为我以前在互联网上的某个地方看到过这些信息(可能是在MSDN上),但我丢失了任何引用,如果我记得好的Microsoft使用8或16 kb作为缓冲区大小,在任何情况下都肯定小于1 MB 我正在寻找一份官方参考资料,其中微软声明了他们使用的价值,或者某种技术上可

我想知道在我正在开发的.Net拆分器/合并应用程序中使用哪一个缓冲区大小值是合适的,因为为了改进某些FileStream,我将设置与Microsoft内部用于Windows中的复制操作相同的缓冲区大小

我知道这些信息是存在的,而且是公开的,因为我以前在互联网上的某个地方看到过这些信息(可能是在MSDN上),但我丢失了任何引用,如果我记得好的Microsoft使用8或16 kb作为缓冲区大小,在任何情况下都肯定小于1 MB


我正在寻找一份官方参考资料,其中微软声明了他们使用的价值,或者某种技术上可证明的答案(可能使用反射?),请避免回答“我认为他们使用了X kb…”因为不可证明。

通过在中检查实现,可以很容易地检查特定流实现使用的默认缓冲区大小

例如,a的默认缓冲区大小为4096字节。 实现的默认缓冲区大小为80 Kb

当您自己选择缓冲区大小时,一个好的做法是:

  • 将其设置为操作系统页面大小的倍数(通常为4096字节)
  • 如果文件/流的大小很大,请使缓冲区大于单个操作系统页面
  • 如果这是一个(潜在的)性能瓶颈,请进行性能测试以找到合适的大小
  • 系统A上的最佳配置可能不在具有不同硬件/软件配置的系统B上

通过在中检查实现,可以轻松检查特定流实现使用的默认缓冲区大小

例如,a的默认缓冲区大小为4096字节。 实现的默认缓冲区大小为80 Kb

当您自己选择缓冲区大小时,一个好的做法是:

  • 将其设置为操作系统页面大小的倍数(通常为4096字节)
  • 如果文件/流的大小很大,请使缓冲区大于单个操作系统页面
  • 如果这是一个(潜在的)性能瓶颈,请进行性能测试以找到合适的大小
  • 系统A上的最佳配置可能不在具有不同硬件/软件配置的系统B上

为什么会有一些官方缓冲区大小?用你喜欢的任何尺寸。如果您觉得您的性能可以更大或更小的尺寸,然后尝试它,并找出!感谢您的评论,但这并不能解决我的问题,过大的缓冲区大小总是会对性能产生负面影响,我不经常使用1 MB的缓冲区大小,但在过去我看到了Microsoft使用的官方值(大约8 kb和256 kb,但我不记得确切的值),我想再次找到官方信息,以遵循更好的缓冲区编程实践(应用与Microsoft相同的缓冲区大小)。如果您针对不同的缓冲区大小对应用程序进行性能测试,这将解决您的问题。然后你会发现什么对你的应用程序是最好的,这可能不同于什么对Windows是最好的。为什么会有一些官方的缓冲区大小?用你喜欢的任何尺寸。如果您觉得您的性能可以更大或更小的尺寸,然后尝试它,并找出!感谢您的评论,但这并不能解决我的问题,过大的缓冲区大小总是会对性能产生负面影响,我不经常使用1 MB的缓冲区大小,但在过去我看到了Microsoft使用的官方值(大约8 kb和256 kb,但我不记得确切的值),我想再次找到官方信息,以遵循更好的缓冲区编程实践(应用与Microsoft相同的缓冲区大小)。如果您针对不同的缓冲区大小对应用程序进行性能测试,这将解决您的问题。然后,您将发现什么最适合您的应用程序,这可能不同于什么最适合Windows。