Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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
实现FUSE文件系统:iostream、FILE*还是普通文件描述符? < >我在C++中实现了一个小型的只读熔丝文件系统,它从某个多文件存档中读取数据。我使用iostreams(实际上是boost::filesystem::ifstream)来读取文件。现在我想知道这是否是一个明智的决定_C++_Performance_Fuse_Boost Iostreams_Unbuffered - Fatal编程技术网

实现FUSE文件系统:iostream、FILE*还是普通文件描述符? < >我在C++中实现了一个小型的只读熔丝文件系统,它从某个多文件存档中读取数据。我使用iostreams(实际上是boost::filesystem::ifstream)来读取文件。现在我想知道这是否是一个明智的决定

实现FUSE文件系统:iostream、FILE*还是普通文件描述符? < >我在C++中实现了一个小型的只读熔丝文件系统,它从某个多文件存档中读取数据。我使用iostreams(实际上是boost::filesystem::ifstream)来读取文件。现在我想知道这是否是一个明智的决定,c++,performance,fuse,boost-iostreams,unbuffered,C++,Performance,Fuse,Boost Iostreams,Unbuffered,首先,iostreams的错误消息非常可怕(请参阅),我不能简单地返回errnomy file operations。但第二,我想知道在实现FUSE文件系统时使用无缓冲IO是否更好(不是用于读取归档索引,而是在读取文件时使用—它是一个未压缩的归档,其中文件从不拆分为多个归档文件)。因为读取文件的应用程序将在需要时进行缓冲。这种缓冲只是不必要的开销吗 还有(提升)iostreams有多快?我可以毫无问题地播放挂载归档文件中的WAV文件,但我仍然怀疑iostreams是否会在我真的不需要的时候增加不

首先,iostreams的错误消息非常可怕(请参阅),我不能简单地返回
errno
my file operations。但第二,我想知道在实现FUSE文件系统时使用无缓冲IO是否更好(不是用于读取归档索引,而是在读取文件时使用—它是一个未压缩的归档,其中文件从不拆分为多个归档文件)。因为读取文件的应用程序将在需要时进行缓冲。这种缓冲只是不必要的开销吗


还有(提升)iostreams有多快?我可以毫无问题地播放挂载归档文件中的WAV文件,但我仍然怀疑iostreams是否会在我真的不需要的时候增加不必要的开销(它们提供的唯一优势是,它们在超出范围时会自动关闭文件)。

Boost.Filesystem整体上没有实现
fstream
,它只派生自编译器的标准库实现,并重载一些成员函数。也就是说,速度完全取决于编译器的标准库实现,而不是Boost.Filesystem。那么gcc的iostreams的速度如何呢?但我的问题中更重要的部分是:对于FUSE文件系统,无缓冲IO是否会更好?这一层的缓冲IO只是不必要的冗余吗?@panzi:我不知道这些问题的答案;这就是我发表评论而不是回答的原因。:-]GCC的
文件是一个iostream。或者更准确地说,一个streambuf。因此,通过改变C++ I/O到C风格I/O,没有速度增益。但是使用
文件
我可以得到合理的错误消息,并且设置了
错误号
。拥有
errno
对于FUSE文件系统来说很方便。有没有一种方法可以使用iostreams获取合理的错误消息?Boost.Filesystem整体上不实现
fstream
,它只从编译器的标准库实现中派生,并重载了几个成员函数。也就是说,速度完全取决于编译器的标准库实现,而不是Boost.Filesystem。那么gcc的iostreams的速度如何呢?但我的问题中更重要的部分是:对于FUSE文件系统,无缓冲IO是否会更好?这一层的缓冲IO只是不必要的冗余吗?@panzi:我不知道这些问题的答案;这就是我发表评论而不是回答的原因。:-]GCC的
文件是一个iostream。或者更准确地说,一个streambuf。因此,通过改变C++ I/O到C风格I/O,没有速度增益。但是使用
文件
我可以得到合理的错误消息,并且设置了
错误号
。拥有
errno
对于FUSE文件系统来说很方便。有没有办法使用iostreams获取合理的错误消息?