我正在使用long double in
C程序来计算Mandelbrot Set的2D图像,但希望能够进一步精确地缩放.
是否可以从任意精度数学库中获得任何性能提升,可以根据需要限制精度,而不是从long double
精度直接跳到任意精度?
哪个是任意精度数学库中最快的?
我正在用GCC的-Wconversion警告标志构建我的项目.(gcc(Debian 4.3.2-1.1)4.3.2)在64位GNU/Linux OS /硬件上.我发现它有助于确定我混合类型的位置或者应该使用哪种类型的清晰度.
在大多数激活它的警告的其他情况下它并没有那么有用,我问我打算如何处理这些问题:
enum { A = 45, B, C }; /* fine */
char a = A; /* huh? seems to not warn about A being int. */
char b = a + 1; /* warning converting from int to char */
char c = B - 2; /* huh? ignores this *blatant* int too.*/
char d = (a > b ? b : c) /* warning converting from int to char */
Run Code Online (Sandbox Code Playgroud)
由于上述测试(案例a
和c …
我想弄清楚在C中访问指针需要多少个时钟周期或总指令.我不认为我知道如何弄清楚例如,p-> x = d-> a + f-> b
我会假设每个指针有两个加载,只是猜测指针会有一个加载,以及值的加载.所以在这个操作中,指针分辨率将是一个比实际添加更大的因素,只要试图加速这个代码,对吧?
这可能取决于所实现的编译器和架构,但我是否走在正确的轨道上?
我已经看到了一些代码,其中每个值,例如,3个添加,来自a
f2->sum = p1->p2->p3->x + p1->p2->p3->a + p1->p2->p3->m
Run Code Online (Sandbox Code Playgroud)
结构的类型,我试图定义这是多么糟糕
我一直在使用GCC 4.6开发我的应用程序进行编译,但用户报告了"typedef的重新定义"错误.经过一些混乱,我错误地告诉用户使用Git获取最新的源代码,我仔细看了一下,发现了类似的东西:
/* mystruct.h */
#ifdef MYSTRUCT_H
#define MYSTRUCT_H
typedef struct _mystruct mystruct
#endif
/* mystruct.c */
#include "mystruct.h"
typedef struct _mystruct
{
int a;
int b;
} mystruct;
Run Code Online (Sandbox Code Playgroud)
对于较旧的GCC版本,这很容易修复,但为什么这不再是错误?还是需要报告?
我找到了这个问题的答案,但我找不到解决方案,所以发布给后人.
那么,在Objective-C中,如何从指针创建一个对象,以便将它存储在objective-c集合(NSArray,NSDictionary,NSSet等)中,而不必恢复为常规C?
在编译对以下函数的调用期间:
char* process_array_of_strings(const char** strings);
Run Code Online (Sandbox Code Playgroud)
当a char**
作为参数传递时,GCC会抱怨:
note: expected ‘const char **’ but argument is of type ‘char **’
Run Code Online (Sandbox Code Playgroud)
虽然该函数不会改变字符(因此是const),但它会复制指针数组以便修改字符指针本身,因此这里的常量指针绝对是不可取的.
编译成功,程序似乎工作.那么程序员应该如何处理这个警告呢?
从 shell 中,当我%d
在输入文件名中指定图像序列时,FFMPEG 坚持“没有这样的文件或目录”,尽管有相反的证据。在网上查找,我还没有找到任何使用 FFMPEG 从图像序列生成视频的参考(其中%d
未使用),但它似乎在这里失败了。
我的图像应该由 FFMPEG 识别img%06d.gif
。ls img[0-9][0-9][0-9][0-9][0-9][0-9].gif
在我发出 FFMPEG 命令的同一目录中发出成功。
我使用的命令是:
ffmpeg -i img%06d.gif -c:v libx264 -r 30 -pix_fmt yuv720p test.mp4
Run Code Online (Sandbox Code Playgroud)
可能出了什么问题???
从很久以前,我有一个记忆,我一直坚持认为与零的比较比任何其他值都快(ahem Z80).
在我写的一些C代码中,我想跳过设置了所有位的值.目前这些值的类型char
可能会发生变化.我有两种不同的替代方法来执行测试:
if (!~b)
/* skip */
Run Code Online (Sandbox Code Playgroud)
和
if (b == 0xff)
/* skip */
Run Code Online (Sandbox Code Playgroud)
除了后者假设b是一个8位字符而前者没有,前者会因为旧的零优化技巧比较快,还是今天的CPU超出了这种情况呢?
c ×6
gcc ×2
pointers ×2
bits ×1
char ×1
cocoa ×1
cocoa-touch ×1
comparison ×1
const ×1
ffmpeg ×1
instructions ×1
linux ×1
math ×1
objective-c ×1
optimization ×1
redefinition ×1
typedef ×1