小编gre*_*ian的帖子

二进制到浮点数

我想从二进制表示中生成浮点变量,我很快就想出了以下代码:

float bintofloat(unsigned int x) {
    float *f = (float *)&x;
    return *f;
}
Run Code Online (Sandbox Code Playgroud)

然后可以按如下方式调用上述函数:

float f = bintofloat(0x3f800000);
Run Code Online (Sandbox Code Playgroud)

我只是希望得到一些关于这种方法的意见:使用指针是否是最好的方法,或者是否有更好或更简洁的方法?

不幸的是,我对类型的使用似乎造成了干扰。对此我深表歉意;为了简单起见,我选择坚持使用内置类型。但我确实认识到这是天真的,并假设sizeof(int) == sizeof(float)

同样,我的主要问题是使用指针是否是实现从二进制到浮点转换的好方法?

c floating-point binary

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

最佳缓冲区大小

我想这是一个性能计算问题.我正在用C语言编写一个程序,它产生大量的输出,远远超过通常可以整体存储在RAM中的程序.我打算简单地将输出写入stdout; 所以它可能只是进入屏幕,或者可能被重定向到文件中.我的问题是如何为将存储在RAM中的数据选择最佳缓冲区大小?

输出数据本身并不是特别重要,所以我们只是说它产生了一个庞大的随机整数列表.

我打算有两个线程:一个产生数据并将其写入缓冲区,另一个将该缓冲区写入stdout.这样,我可以开始生成下一个输出缓冲区,同时仍然写入前一个缓冲区stdout.

需要明确的是,我的问题不是如何使用功能,如malloc()pthread_create()等我的问题是纯粹的关于如何选择一个号码最佳缓冲区大小字节(512,1024,1048576),这将提供最佳性能?

理想情况下,我想找到一种方法,我可以动态地选择最佳缓冲区大小,以便我的程序可以适应当时运行的任何硬件.我试图寻找这个问题的答案,虽然我发现了一些关于缓冲区大小的线程,但我找不到与此问题特别相关的任何内容.因此,我只是想把它作为一个问题发布,希望我能得到一些不同的观点,并提出比我自己更好的东西.

c performance buffer memory-management

3
推荐指数
1
解决办法
293
查看次数