Вы, кодер, отвечаете за предоставление различных решений для разных размеров экрана. Вы проверяете размер устройства, а затем представляете контент соответствующим образом. В целом, это не так, чтобы отличать контент от ротации. Если вы надеетесь на волшебное решение, которое сделает все, что для вас в AIR, вам не повезло, потому что его нет.
Не рекомендуется использовать сценарные скальмоды (вы всегда должны использовать шкалу на мобильном устройстве), так как тогда вы полностью отказываетесь от возможности сравнивать позицию вашего объекта отображения в соответствии с реальным размером физического устройства (в основном вы не будет знать точно, что бы вы не отображали на экране или полностью из него).
Если вы считаете, что разработка для мобильных устройств была простой (не только с использованием AIR, но с использованием любой технологии), тогда извините, это не особенно важно, потому что вы должны обрабатывать все эти размеры.
Основной принцип о том, как с этим бороться:
Я считаю, что это то, что предназначено для line_profiler Роберта Керна . Из ссылки:
File: pystone.py
Function: Proc2 at line 149
Total time: 0.606656 s
Line # Hits Time Per Hit % Time Line Contents
==============================================================
149 @profile
150 def Proc2(IntParIO):
151 50000 82003 1.6 13.5 IntLoc = IntParIO + 10
152 50000 63162 1.3 10.4 while 1:
153 50000 69065 1.4 11.4 if Char1Glob == 'A':
154 50000 66354 1.3 10.9 IntLoc = IntLoc - 1
155 50000 67263 1.3 11.1 IntParIO = IntLoc - IntGlob
156 50000 65494 1.3 10.8 EnumLoc = Ident1
157 50000 68001 1.4 11.2 if EnumLoc == Ident1:
158 50000 63739 1.3 10.5 break
159 50000 61575 1.2 10.1 return IntParIO
Надеюсь, что это поможет!
PyVmMonitor имеет живой просмотр, который может помочь вам там (вы можете подключиться к работающей программе и получить статистические данные из нее).
Вы также можете использовать pprofile ( pypi ). Если вы хотите профилировать все исполнение, это не требует изменения исходного кода. Вы можете также профилировать подмножество более крупной программы двумя способами:
import pprofile
profiler = pprofile.Profile()
with profiler:
some_code
# Process profile content: generate a cachegrind file and send it to user.
import pprofile
profiler = pprofile.StatisticalProfile()
statistical_profiler_thread = pprofile.StatisticalThread(
profiler=profiler,
)
with statistical_profiler_thread:
sleep(n)
# Likewise, process profile content
Формат вывода аннотации кода очень похож на профилировщик строк:
$ pprofile --threads 0 demo/threads.py
Command line: ['demo/threads.py']
Total duration: 1.00573s
File: demo/threads.py
File duration: 1.00168s (99.60%)
Line #| Hits| Time| Time per hit| %|Source code
------+----------+-------------+-------------+-------+-----------
1| 2| 3.21865e-05| 1.60933e-05| 0.00%|import threading
2| 1| 5.96046e-06| 5.96046e-06| 0.00%|import time
3| 0| 0| 0| 0.00%|
4| 2| 1.5974e-05| 7.98702e-06| 0.00%|def func():
5| 1| 1.00111| 1.00111| 99.54%| time.sleep(1)
6| 0| 0| 0| 0.00%|
7| 2| 2.00272e-05| 1.00136e-05| 0.00%|def func2():
8| 1| 1.69277e-05| 1.69277e-05| 0.00%| pass
9| 0| 0| 0| 0.00%|
10| 1| 1.81198e-05| 1.81198e-05| 0.00%|t1 = threading.Thread(target=func)
(call)| 1| 0.000610828| 0.000610828| 0.06%|# /usr/lib/python2.7/threading.py:436 __init__
11| 1| 1.52588e-05| 1.52588e-05| 0.00%|t2 = threading.Thread(target=func)
(call)| 1| 0.000438929| 0.000438929| 0.04%|# /usr/lib/python2.7/threading.py:436 __init__
12| 1| 4.79221e-05| 4.79221e-05| 0.00%|t1.start()
(call)| 1| 0.000843048| 0.000843048| 0.08%|# /usr/lib/python2.7/threading.py:485 start
13| 1| 6.48499e-05| 6.48499e-05| 0.01%|t2.start()
(call)| 1| 0.00115609| 0.00115609| 0.11%|# /usr/lib/python2.7/threading.py:485 start
14| 1| 0.000205994| 0.000205994| 0.02%|(func(), func2())
(call)| 1| 1.00112| 1.00112| 99.54%|# demo/threads.py:4 func
(call)| 1| 3.09944e-05| 3.09944e-05| 0.00%|# demo/threads.py:7 func2
15| 1| 7.62939e-05| 7.62939e-05| 0.01%|t1.join()
(call)| 1| 0.000423908| 0.000423908| 0.04%|# /usr/lib/python2.7/threading.py:653 join
16| 1| 5.26905e-05| 5.26905e-05| 0.01%|t2.join()
(call)| 1| 0.000320196| 0.000320196| 0.03%|# /usr/lib/python2.7/threading.py:653 join
Обратите внимание, что поскольку pprofile не полагается на модификацию кода, он может профилировать инструкции модуля верхнего уровня, позволяя профилировать время запуска программы (сколько времени требуется для импорта модулей, инициализировать глобальные переменные, ...).
Он может генерировать вывод в формате cachegrind, поэтому вы можете использовать kcachegrind , чтобы легко просматривать большие результаты.
Раскрытие: Я автор pprofile.
import line_profiler;
, а затем? – Rhubarb 11 March 2014 в 14:19