当前位置: 技术问答>linux和unix
100分+100分 aix64位编程求助,如何编写64位c程序啊?谢谢大家!!
来源: 互联网 发布时间:2016-05-19
本文导语: 100分+100分 aix64位编程求助,如何编写64位c程序啊?谢谢大家!! 怎样能提高程序的效率,加快运行速度,合理利用64 位? 谢谢了! | 在AIX上,首先你的内核要是64位的,这样应用可以是32...
100分+100分 aix64位编程求助,如何编写64位c程序啊?谢谢大家!!
怎样能提高程序的效率,加快运行速度,合理利用64 位?
谢谢了!
怎样能提高程序的效率,加快运行速度,合理利用64 位?
谢谢了!
|
在AIX上,首先你的内核要是64位的,这样应用可以是32,也可以选择编译成64位。
可以通过一下命令检查内核的位数:
prtconf | grep Kernel
如果是64-bit,那就没有问题了。
然后有两个办法把应用编译成64位:
1.增加-q64选项,无论使用cc, xlc, xlC,都可以用这个选项。
2.设置环境变量,export OBJECT_MODE=64,然后编译。
如果该开发环境下都是开发64位应用,建议使用第二种方式。在.profile中设置环境变量即可。
另外需要注意的是,应用需要链接的其他库(比如oracle或informix相关库文件)也必须是64的,否则会报错。
可以通过一下命令检查内核的位数:
prtconf | grep Kernel
如果是64-bit,那就没有问题了。
然后有两个办法把应用编译成64位:
1.增加-q64选项,无论使用cc, xlc, xlC,都可以用这个选项。
2.设置环境变量,export OBJECT_MODE=64,然后编译。
如果该开发环境下都是开发64位应用,建议使用第二种方式。在.profile中设置环境变量即可。
另外需要注意的是,应用需要链接的其他库(比如oracle或informix相关库文件)也必须是64的,否则会报错。
|
64位的开发和32位的一样吧,代码该怎么写还是怎么写,只是编译的区别!
优化的问题应该首先是找出瓶颈,然后对症下药,
真还没感觉出来64位和有32位对写代码,优化有啥影响,感觉就是透明的!
优化的问题应该首先是找出瓶颈,然后对症下药,
真还没感觉出来64位和有32位对写代码,优化有啥影响,感觉就是透明的!
|
顶楼上的,单纯的32到64的移植不会有明显的性能提升,除非在32下2GB内存不够用,需要更大的内存空间来缓存数据。
|
一般的程序从32位移植到64位没有问题,但因为数据类型long和time_t,以及指针地址在64位下都变成8字节(还有一些派生出来的数据类型,象size_t, socklen_t也都发生变化),因此有些程序如果代码风格不好,比如说把指针固定认为是4字节,或把long或time_t也认为就是4字节,就有可能出问题。
比如这样的代码移植到64位就会有问题:
long *p=(long *)malloc(4*n);
而如果写成这样就不会出问题:
long *p=(long *)malloc(sizeof(long)*n);
因为数据类型的变化,使用有些函数就必须要小心(特别是传地址的),如果原来代码不严谨,会带来数据类型的隐式转换,后果不可预期。
是否要用64位,看你的需要,光从性能提升来看应该不是必须的。因为64的寻址空间扩大很多,如果你的进程需要的内存在2G以上,可以考虑使用64位。当然还有一个是,64位是趋势,IBM的Power6机器已经不支持32位的内核(当然应用还是可以是32位的)。
|
我们都是移植,没有优化,代码都是统一的,要小心指针位数,从32位变成了64位,long也从32位变成了64位,其他的没变
|
其实64位的系统,数据类型的长度基本都没变,指针变成了64位的了,寄存器名字变了,也加长到64位的了
如果要提高性能,最最根本的还是从算法上着手,如果算法已经没法再改进了而仍然需要还提高性,那就编译成
汇编代码,然后看汇编指令,手动的进一步优化,但是对性能要求这么高的程序貌似现在很少见很少见了...
如果要提高性能,最最根本的还是从算法上着手,如果算法已经没法再改进了而仍然需要还提高性,那就编译成
汇编代码,然后看汇编指令,手动的进一步优化,但是对性能要求这么高的程序貌似现在很少见很少见了...
|
我记得gcc有个选项,编译的时候. -m64之类的东西
|
最简单的方法就是在64位的系统上开发,这样编译出来的程序默认就是64位的。
|
虚拟一个64位的系统吧,然后在上面倒腾倒腾!
|
顶楼上的。。学习。。。
|
帮顶,学习一下
|
帮顶,没做过64位编程。
|
没那么复杂,主要指针与int型转换会出问题