草庐IT

C++标准

全部标签

c - fwrite() 性能远低于磁盘容量

我有一个包含1700万个元素的struct动态分配数组。为了将它保存到磁盘,我写了fwrite(StructList,sizeof(Struct),NumStructs,FilePointer)在后面的步骤中,我使用等效的fread语句读取它,即使用sizeof(Struct)和NumStructs的计数.我预计生成的文件大约为3.5GB(这都是x64)。是否可以通过传递sizeof(Struct)*NumStructs作为大小和1作为计数来加快速度?我绞尽脑汁想知道为什么在具有32GBRAM(大量写入缓存)的快速计算机上写入操作可能需要分钟。我已经运行了自制基准测试,缓存足够激进,前

c - 如何在线程/进程之间可移植地共享变量?

我有一个服务器,它为每个传入请求生成一个新进程或线程,我需要从线程和进程读取和写入在该服务器中定义的变量。由于服务器程序需要同时在UNIX和Windows上运行,我需要以可移植的方式共享变量,但我该怎么做呢?我需要使用标准C库或native系统调用,所以请不要推荐第三方库。 最佳答案 sharedmemory是特定于操作系统的。在Linux上,考虑阅读shm_overview(7)和(因为使用共享内存,你总是需要某种方式来同步)sem_overview(7).当然,您需要找出相似(但可能不等同)的Windows函数调用。注意thre

c - 如何在 C 程序中重定向标准输入(在 Windows 下)

我有一个名为a.exe的简单C程序,其主循环如下:voidinput_console(){printf(">>");charin_string[256]={0};fgets(in_string,256,stdin);parse(in_string);}当我启动它并从我的键盘输入命令时,它是这样工作的:>>say_helloHello!>>say_goodbyeGoodbye!>>nocommandfound>>blablablablaCommandblablablablanotrecognized>>nocommandfound等等现在我想从文件而不是键盘读取输入,所以我这样准备了in

c# - 标准输出阅读器挂起 BCP 工具

我正在通过exe执行BCP命令,但在复制50000行后卡住了。我查看了一些论坛,了解到如果我们在代码中使用StandardOuputReader而不是它的最大输出限制接近50000行,这也发生在我身上有没有一种方法可以让我运行重定向输出,其中可以输出超过50000行。这段代码在我这里有效proc.StartInfo.RedirectStandardOutput=false;但我想让它为真,以查看输出。privatestaticvoidRunBatch(stringFullfilepath,stringBatchFilePathDumpFlatFile){mLogger.Error("R

c - 使用 C 和原始 Win32 设置按钮图标

我正在使用纯C(无MCF)使用原始Win32API构建一个带有一些简单对话框的GUI。在其中一个对话框中,我想显示一个带有图标(一个小文件夹)而不是文本的按钮。我准备了一个大小合适(16x16像素)的.ico文件,然后进行如下操作:我已经在资源头文件中定义了图标资源:#defineICON_FOLDER901我已将名为folder.ico的图标放在资源脚本的同一文件夹中,并在其中加载了图标资源:ICON_FOLDERICON"folder.ico"我在指定BS_ICON样式的相应对话框资源中定义了我的按钮(MODEL_SEARCH也是在资源header中定义的资源ID):CONTROL

cudaEventRecord() 在 Visual Studio CPU 代码上计时不正确

在做NVIDIA制作的CUDA的一些基本示例时,我复制了一些代码来测试从CPU到GPU计算的矩阵乘法加速。查看结果30分钟后,看到我的CPU(是CPU)的计算速度比我的GPU快1000倍,我意识到时序工作不正常。一段代码看起来像(这是来自NVIDIA的代码)://CreatetimerscudaEvent_tstart;cudaEvent_tstop;floatsimpleKernelTime;floatoptimisedKernelTime;//starttimercudaEventCreate(&start);cudaEventCreate(&stop);cudaEventReco

c++ - 我怎样才能刷新标准输入? (环境 : Mingw compiler, 运行在 xterm 或 Cygwin 的 mintty 中)

我知道有两种刷新标准输入的方法:(1)boolFlushConsoleInputBuffer(_In_HANDLEhConsoleInput);(2)fflush(stdin);但是,在我的环境中:Compiler:MinGWg++Runningin:Windows,CygwinxtermorCygwinmintty它们都不起作用。我能做什么?注意:如果我的程序在dos提示窗口下运行,FlushConsoleInputBuffer()会起作用。此外,FlushConsoleInputBuffer()在Cygwinxterm或mintty上运行时会很好地返回false。--更新--我怀疑

windows - 如何获取文件或目录的标准化日期/时间戳。在纯批处理脚本中?

在Windows命令行中是否有一种方法可以以标准化的区域设置无关格式(例如,ISO8601)检索文件或目录的日期/时间戳(修改、创建、访问)?我发现dir的输出使用系统相关的日期/时间格式,缺少秒数。参数的~t修饰符(%~t1)和for变量扩展(%~tI).forfiles变量@fdate和@ftime也取决于系统设置(尽管后者至少也返回秒数)。我了解到wmicOSGETLocalDateTime/VALUE是获取当前系统日期/时间的一种方法(输出可能类似于LocalDateTime=20151021020000.000000+120,可以通过for/F获取)。但是是否还有一个命令(行

c - W7 和 Linux Mint 中不同的 sizeof(long) 值

IDE:代码::block13.12编译器:GNUGCC应用类型:控制台应用语言:C平台:W7和LinuxMint我为自定义语言编写了编译器和解释器,为Windows和Linux制作了可执行文件。编译器-显然-生成一个由解释器读取的代码文件。我想在Windows和Linux上都使用编译后的文件。因此,用Windows编译器创建的文件必须能被Linux解释器读取,反之亦然。我无法使兼容性正常工作。我发现在Windows中,sizeof(long)=4,在Linux中,sizeof(long)=8。由于编译器会将长整数写入输出文件,我认为大小差异是我遇到的(部分)问题。我查看了这个论坛,但

node.js - 使用 PowerShell Invoke-Command and Process 让标准输出出现在控制台上

我有一个使用Invoke-Command的Powershell脚本。这是被调用的代码:$scriptblock={$process=New-Objectsystem.Diagnostics.Process$si=New-ObjectSystem.Diagnostics.ProcessStartInfo$si.FileName=$cmd$si.Arguments=$cmd_args$si.UseShellExecute=false$si.RedirectStandardOutput=true$process.StartInfo=$si$process.Start()$processId=