CNDEV
...
...
账号
登
登录
先
先随便看看
中国开发网
: 论坛:
程序员情感CBD
: 贴子 701452
holly
·
2009-02-18 09:53:30
·
阅读: 299
自己构造跳转表吧. gcc 有可以拿 label 当地址使的语法扩展的
<空>
相关信息:
[技术贴]一个很头大的问题,gcc编译器编译某个很长的cpp文件,无-O2编译选项时很快就编译通过.添加-O2选项时,很长时间后编译器报告分配 xxxxxx 字节内存失败。
(108字)
(
bjwf
[493]
2009-02-18 13:10
)
对, 就是 gcc 的问题. 只能用不优化来解决
(空) (
holly
[268]
2009-02-18 13:12
)
我打算采用一段一段替换法找到是哪段代码引发的问题,然后重写这段。
(空) (
bjwf
[265]
2009-02-18 13:17
)
估计主要还是条目数量的问题
(19字)
(
品雪
[300]
2009-02-18 13:22
)
我已经折成两个文件了,结果其中一个include了另外两个文件的文件出问题。
(26字)
(
bjwf
[309]
2009-02-18 13:24
)
我估计也是,要么是太多的宏引起的,要么跟inline有关。
(空) (
bjwf
[285]
2009-02-18 13:25
)
好,找到了再这里贴一下
(空) (
pigprince
[252]
2009-02-18 13:23
)
嘎嘎,年前才搞过这个问题,是target arm吧?
(37字)
(
品雪
[408]
2009-02-18 13:14
)
不是arm,是另一种RISC指令集的东东。
(空) (
bjwf
[250]
2009-02-18 13:16
)
你后来咋解决的?
(空) (
bjwf
[242]
2009-02-18 13:21
)
不要O2了呗
(27字)
(
品雪
[325]
2009-02-18 13:24
)
这个有用没?
(92字)
(
周星驰
[349]
2009-02-18 16:42
)
问题找到了,怎么改比较头疼,是一个很大的switch里有4千多个case造成的
(28字)
(
bjwf
[327]
2009-02-18 17:45
)
不是人写的吧
(8字)
(
haitao
[299]
2009-02-18 17:53
)
是人写的。都改成if性能损失肯定很大,改动量也很大,改完之后也不保证能编译过。
(79字)
(
bjwf
[372]
2009-02-18 17:58
)
记得有说法是switch编译出来就是和if一样的
(47字)
(
haitao
[369]
2009-02-18 18:04
)
不一定,得看编译器,switch(x)/case 可以编译成 jmp 到与 x 相关的一个地址的形式,if 不行,后面的要经过很多次比较
(26字)
(
bjwf
[302]
2009-02-18 18:11
)
基本上不一样的. switch 一般都是构造跳转表的
(空) (
holly
[257]
2009-02-18 19:42
)
自己构造跳转表吧. gcc 有可以拿 label 当地址使的语法扩展的
(空) (
holly
[298]
2009-02-18 17:53
)
嗯,这种方法性能好,但是改动量也很大。
(211字)
(
bjwf
[315]
2009-02-18 18:05
)
自己写个脚本程序自动修改源程序好了。呵呵,我也就是嘴上说说,实际也不见得做得出。
(空) (
张秋桥
[355]
2009-02-18 18:13
)
可能可以的做法
(45字)
(
pigprince
[346]
2009-02-18 19:11
)
嗯这是最现实的做法,先这样试试.
(空) (
bjwf
[283]
2009-02-18 19:19
)
写个小生成器,转成表驱动
(5字)
(
pinxue
[324]
2009-02-18 23:23
)
欢迎光临本社区,您还没有登录,不能发贴子。请在
这里登录