我正在使用 Windows 10 64 位机器、6850K CPU 和 64 GB DDR4 RAM,通过 M.2 连接三星 SSD。我想将一个大小约为 15 GB 的文件读取到内存中。我目前正在使用 fstream 将整个文件读入一个无符号字符数组,使用对其 read 函数的单个调用。但是,我达到的速度没有达到 SSD 的最大读取速度(SSD 读取速度约为 3500 MB/s 时为 1500 MB/s)。
所以我想知道是否有更快的方法?如果我对较小的块进行多次读取调用会更快吗?如果是这样,最佳块大小是多少?我看到有些人在之前提出的一些问题中提到了 4K 读取。这适用于这种情况吗?
任何帮助表示赞赏。
我的代码摘录如下
我的阅读代码如下
fstream myFile;
myFile.open("file", ios::binary | ios::in);
myFile.read(reinterpret_cast<char*>(buf), 14929920000LL);
Run Code Online (Sandbox Code Playgroud)
其中buf
与读取的大小相同。
老实说,我现在正在失去理智.让我首先说一下,当我在其中定义文本和什么不是时,"MessageBox"函数在CodeBlocks中运行得非常好.但无论出于何种原因,Visual Studio对于MessageBox函数内部的内容都非常挑剔.
它一直告诉我,无论我把它放在哪里都对LPCWSTR"事物"无效.为了避免这种情况,我在下面对此进行了编程:
int main()
{
LPCWSTR a;
std::string s = "Please help me.";
a = (LPCWSTR)s.c_str();
LPCWSTR b;
std::string t = "MTS";
b = (LPCWSTR)t.c_str();
MessageBox(0,a,b, MB_OK | MB_ICONSTOP);
}
Run Code Online (Sandbox Code Playgroud)
而不是它按照我原来的想法工作,而不是因此得到了这个:
这对我来说非常紧张,我知道在此之前已经问了一次,所以请不要将我的问题标记为重复.如何使这段代码工作,以便我的信息以英文显示,并描绘我想说清楚的内容?
提前谢谢,
MTS
我有DBGrid.有时候,如果我改变一些单元格值,它会给出一个通配符.你可以在图像中看到.
我的问题:当这个通配符出现时,它可以出现吗?如何禁用它?
我收到以下错误:
错误:'HFP_CIEV_CHELD'未声明(首次使用此功能)
我在这些文件的顶部定义了一个宏,如下所示 -
#define HFP_CIEV_CHELD(n) (UCHAR*)"\r\n+CIEV: 4," #n "\r\n"
Run Code Online (Sandbox Code Playgroud)
并在函数中使用
switch(status->index)
{
case AGABS_HFP_CALL_HELD_INDEX :
Ag_send_data(HFP_CIEV_CHELD(status->dwCievStatus),(UCHAR)BT_str_len(HFP_CIEV_CHELD));
break;
Run Code Online (Sandbox Code Playgroud)
这有什么问题?