小编Nav*_*een的帖子

分析磁盘访问

目前我正在研究一个读写磁盘的MFC应用程序.有时这个应用程序运行得非常快,有时候它很慢.我猜这是因为涉及磁盘访问,因此我想对其进行分析.这些是这方面的一些问题:

(1).目前我正在使用AQTime分析器来分析应用程序.有没有人试过使用它来分析磁盘访问?或者还有其他可以使用的工具吗?

(2).我应该关注哪些最重要的磁盘参数?

(3).如果我有多个线程试图从磁盘读取和写入数据会影响性能吗?即我最好有一个单独的线程访问磁盘?

c++ mfc multithreading profiling disk

5
推荐指数
1
解决办法
1462
查看次数

用C++初始化数组

我看到的每个地方都有人大声争辩说未经初始化的变量是坏的,我当然同意并理解为什么 - 然而; 我的问题是,有时候你不想这样做吗?

例如,取代码:

char arrBuffer[1024] = { '\0' };
Run Code Online (Sandbox Code Playgroud)

是否对整个数组进行NULL操作会对使用数组产生性能影响而不进行初始化?

c c++ arrays performance

5
推荐指数
2
解决办法
3854
查看次数

屏幕像素分辨率,单位mm

是否可以使用Win32 API获得mm的屏幕像素分辨率?我有一个应用程序显示0.34722222222222222作为我的1280x1024显示器上96dpi的值.但我无法弄清楚它是如何获得这个价值的.任何线索都会有所帮助.如果需要,我也可以使用MFC.

编辑 很抱歉混乱,我所说的软件没有使用当前的屏幕分辨率.它是从一些配置文件中读取它.

c c++ winapi mfc

5
推荐指数
2
解决办法
9054
查看次数

堆栈分配失败,堆分配成功!可能吗?

我有以下片段

Class Sample
{ Obj_Class1 o1;
  Obj_Class2 o2;};
Run Code Online (Sandbox Code Playgroud)

但是大小Obj_Class1Obj_Class2是巨大的,所以编译器显示警告"考虑移动一些空间到堆".我被要求用Ob替换Obj_Class1 o1 Obj_Class1* o1 = new Obj_Class1();但是我觉得没有使用这个更改,因为如果堆栈分配失败,堆分配也会失败.我对么?或者进行此更改是有意义的(除了抑制编译器警告之外).

c++ stack visual-c++

5
推荐指数
1
解决办法
401
查看次数

在代码中捕获异常

我正在尝试这段代码来检查是否正在捕获除零异常:

int main(int argc, char* argv[])
{
    try
    {
      //Divide by zero
        int k = 0;
        int j = 8/k;
    }
    catch (...)
    {
        std::cout<<"Caught exception\n";
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我使用VC6编译它时,执行了catch处理程序并且输出为"Caught exception".但是,当我使用VS2008编译它时,程序崩溃而不执行catch块.可能是造成差异的原因是什么?

c++ exception visual-c++-6 visual-studio-2008 visual-c++

4
推荐指数
1
解决办法
471
查看次数

内存使用对算法复杂性的影响

我正在阅读关于C++ STL算法的Nicolai Josuttis一书.对于许多算法,例如stable_sort(),他提到算法的复杂性n*log(n),如果有足够的内存可用,否则它是n*log(n)*log(n).我的问题是内存使用情况如何影响复杂性?STL如何检测这种情况?

c++ complexity-theory stl

4
推荐指数
1
解决办法
281
查看次数

硬盘读取的性能问题

我有一个C++程序,它从硬盘上读取文件,并对文件中的数据进行一些处理.我使用标准的Win32 API来读取文件.我的问题是这个程序有时非常快,然后突然减慢到之前速度的1/6.如果我在多次运行中一次又一次地读取相同的文件,那么通常第一次运行将是最慢的.然后它保持速度,直到我读取其他一组文件.所以我明显的猜测是分析磁盘访问时间.我使用了perfmon实用程序并测量了我的程序的IO读取字节数/秒.正如预期的那样,读取的字节数存在巨大差异(约5倍).我的问题是:

(1).OS(在我的情况下是Windows)是否将最近读取的文件缓存到某处,以便后续加载更快?

(2).如果我可以保证我读取的所有文件都位于同一目录中,那么有什么方法可以将它们放在硬盘中以便我的磁盘访问时间更快?

我能为此做点什么吗?

c++ performance winapi disk

4
推荐指数
2
解决办法
2936
查看次数

boost :: unordered_map是否保持插入顺序?

我正在寻找一个容器,它提供了std :: map之类的接口,但保持了元素插入的顺序.由于地图中的元素不会太多,因此查找性能不是一个大问题.将提振:: unordered_map 工作在这种情况下?即它是否保持插入顺序.我是新手来提升图书馆,因此想知道'无序'的确切含义是什么?

c++ containers boost

4
推荐指数
3
解决办法
4952
查看次数

C++套接字窗口

我有问题.我创建套接字,连接,发送字节,一切都好.

并且为了接收数据我使用recv函数.

char * TOReceive= new char[200];

recv(ConnectSocket, TOReceive , 200, 0);
Run Code Online (Sandbox Code Playgroud)

当有一些数据读取和返回时,成功,当没有数据等待数据时,我需要限制等待时间,例如,如果10秒没有数据应该返回.

非常感谢.

c++ sockets windows

4
推荐指数
1
解决办法
5914
查看次数

用于指纹匹配的SDK

我正在寻找可以进行指纹匹配的SDK.我的其余代码主要是在C中,所以我更喜欢SDK有C API.如果SDK是免费的,那也很棒.有没有人有这些SDK的经验并推荐任何特定的SDK?另外,在查看这些SDK时,我应该集中哪些重要功能?

sdk biometrics fingerprint

4
推荐指数
1
解决办法
1万
查看次数