Как получить оптимизацию gcc-o1, не указывая-O1

Короткий ответ, Вы ничего не пропускаете. SDK Android не обеспечивает прямой метод изменить индикатор TabHost после того, как это было создано. Эти TabSpec только используется для создания вкладки, таким образом изменяясь TabSpec после того, как факт не будет иметь никакого эффекта.

я думаю, что существует обходное решение, все же. Звоните mTabs.getTabWidget() для получения TabWidget объект. Это - просто подкласс ViewGroup, таким образом, можно звонить getChildCount() и getChildAt() для доступа к отдельным вкладкам в TabWidget. Каждой из этих вкладок является также Представление, и в случае вкладки с графическим индикатором и текстовой меткой, это - почти наверняка некоторый другой ViewGroup (возможно, LinearLayout, но это не имеет значения), который содержит ImageView и TextView. Таким образом с небольшой игрой с отладчиком или Log.i, необходимо быть в состоянии выяснить рецепт, чтобы добраться ImageView и изменить его непосредственно.

оборотная сторона - то, что, если Вы не осторожны, точное расположение средств управления во вкладке могло бы измениться, и Ваше приложение могло повредиться. Ваше начальное решение, возможно, более устойчиво, но с другой стороны оно могло бы привести к другим нежелательным побочным эффектам как мерцание или сфокусировать проблемы.

5
задан neuromancer 22 November 2009 в 13:11
поделиться

5 ответов

Один из способов узнать:

gcc -O1 -c -Q -v dummy.c

(где dummy.c - ваше имя файла.) Это заставляет gcc выдавать флаги, используемые в командной строке.

Изменить: Пожалуйста, см. ответ Кастауыры по этому поводу. Похоже, вы не можете смоделировать полную оптимизацию -O1 только с помощью флагов -f .

13
ответ дан 18 December 2019 в 05:55
поделиться

К сожалению, это невозможно. Есть много индивидуальных флагов оптимизации, включенных -O1, true, однако много кода в GCC проверяет значение глобального флага оптимизации и выполняет оптимизацию, не указанную ни одной из опций -f ..

11
ответ дан 18 December 2019 в 05:55
поделиться

Из руководства:

-O
-O1
Optimize. Optimizing compilation takes somewhat more time, and a lot more memory for a large function. 

With -O, the compiler tries to reduce code size and execution time, without performing any optimizations that take a great deal of compilation time. 

-O turns on the following optimization flags: 
          -fauto-inc-dec 
          -fcprop-registers 
          -fdce 
          -fdefer-pop 
          -fdelayed-branch 
          -fdse 
          -fguess-branch-probability 
          -fif-conversion2 
          -fif-conversion 
          -fipa-pure-const 
          -fipa-reference 
          -fmerge-constants
          -fsplit-wide-types 
          -ftree-builtin-call-dce 
          -ftree-ccp 
          -ftree-ch 
          -ftree-copyrename 
          -ftree-dce 
          -ftree-dominator-opts 
          -ftree-dse 
          -ftree-forwprop 
          -ftree-fre 
          -ftree-phiprop 
          -ftree-sra 
          -ftree-pta 
          -ftree-ter 
          -funit-at-a-time
3
ответ дан 18 December 2019 в 05:55
поделиться

Это зависит от вашей версии gcc . См. Справочную страницу gcc .

На моей машине -O (то есть -O1 ) включает следующие оптимизации:

   -fauto-inc-dec -fcprop-registers -fdce -fdefer-pop -fdelayed-branch
   -fdse -fguess-branch-probability -fif-conversion2 -fif-conversion
   -finline-small-functions -fipa-pure-const -fipa-reference
   -fmerge-constants -fsplit-wide-types -ftree-builtin-call-dce
   -ftree-ccp -ftree-ch -ftree-copyrename -ftree-dce
   -ftree-dominator-opts -ftree-dse -ftree-fre -ftree-sra -ftree-ter
   -funit-at-a-time

   -O also turns on -fomit-frame-pointer on machines where doing so
   does not interfere with debugging.
0
ответ дан 18 December 2019 в 05:55
поделиться

Вы также можете попробовать использовать эту прагу (требует GCC> = 4.4):

#pragma GCC optimize opt_list
void f()

Эта прагма позволяет включить и выключать конкретные оптимизации для заданной функции. OPT_LIST - это список параметров -F * * без -F.

Существует также функциональный атрибут для изменения уровня оптимизации:

int f() __attribute__((optimize(1)));

Вы также можете изменить глобальный уровень оптимизации (применяются ко всем последующим функциям):

#pragma GCC optimize 1
#pragma GCC optimize 0

Вы также можете использовать (применить ко всем последующим функциям):

#pragma GCC optimization_level n

и Для компилятора Intel C ( DOC ; применяется только для следующей функции)

#pragma intel optimization_level n
1
ответ дан 18 December 2019 в 05:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: