Скорее всего уже слышали, что складывать строки через + это плохая практика. Падение производительности, и всё такое. Без лишних слов, давайте измерять:
from timeit import timeit
def t1():
# складываем 10 строк через + из переменной
t = 'text'
for _ in range(1000):
s = t + t + t + t + t + t + t + t + t
def t2():
# склеиваем список строк через метод join
arr = ['text'] * 10
for _ in range(1000):
s = ''.join(arr)
def t3():
# складываем через + но не из переменной а непосредственно инлайн объекты
for _ in range(1000):
s = 'text' + 'text' + 'text' + ... # всего 10 раз
Теперь каждую строку склейки запустим по 10М раз
>>> timeit(t1, number=10000)
0.21951690399964718
>>> timeit(t2, number=10000)
1.4978306379998685
>>> timeit(t3, number=10000)
0.2213820789993406
Хм, а нам говорили что через "+" это плохо и медленно ))) 😁
Тут стоит учитывать, что речь идёт о склейке множества длинных строк.
Давайте изменим условия:
def t4():
t = 'text'*100
for _ in range(1000):
s = t + t + t + t + t + t + t + t + t
def t5():
arr = ['text'*100] * 10
for _ in range(1000):
s = ''.join(arr)
def t6():
for _ in range(1000):
s = 'text'*100 + 'text'*100 + ... # всего 10 раз
>>> timeit(t4, number=10000)
12.795130728000004
>>> timeit(t5, number=10000)
2.642637542999182
>>> timeit(t6, number=10000)
0.2184546610005782
Вот, уже другой разговор, сразу видна разница, в среднем в 6 раз. Но погодите, почему последний тест t6() по скорости такой же как и t3()? Ведь строки теперь в 100 раз длиннее!
Это вопросы оптимизации кода, какие простые изменения ускоряют или замедляют выполнение программы. Мы столкнулись с примером обхода обращения к переменной. Например, именно так работает директива #define в С++, во время компиляции подставляя значение переменной вместо ссылки на неё.
В Python это тоже работает, но часто ли вы сможете встретить такой способ работы со строками? К сожалению, способ почти только теоретический.
В целом, тесты показали то, что мы хотели. Делаем выводы самостоятельно.
Полный листинг 🌍
#tricks
DisableGoogleAnalytics
https://gitlab.com/adrian.m.miller/disablegoogleanalytics
Attempts To Disable Common Google Analytics And Ads Receivers In All Affected Packages
What it does/How it works:
On 1st run after rebooting after install the module is assuming you want it to disable the listed analytics and ad receivers, so it will:
Wait till boot is completed
Then sleep for 2 minutes
Then test that cpu usage is under 30% before running
It will then disable the analytics and ad receivers as listed below, and log its progress to /sdcard/fixgoogleanalytics.log
Common Analytics And Ad Recievers:
com.google.android.gms.analytics.AnalyticsJobServicecom.google.android.gms.analytics.CampaignTrackingServicecom.google.android.gms.measurement.AppMeasurementServicecom.google.android.gms.measurement.AppMeasurementJobServicecom.google.android.gms.analytics.AnalyticsReceivercom.google.android.gms.analytics.CampaignTrackingReceivercom.google.android.gms.measurement.AppMeasurementInstallReferrerReceivercom.google.android.gms.measurement.AppMeasurementReceivercom.google.android.gms.measurement.AppMeasurementContentProvidercom.crashlytics.android.CrashlyticsInitProvidercom.google.android.gms.ads.AdActivitycom.google.firebase.iid.FirebaseInstanceIdService
Once complete the service.sh script will delete itself
Once that happens any further interaction is purely via the included dga script as a binary in /system/(x)bin
dga takes 2 arguments, disable or enable, though i doubt too many will be looking to enable analytics and ad receivers, unless the disabling has unwanted effects on their system, which is high time to include the usual disclaimer that you run this at your own risk and not even dga enable is garaunteed to undo the changes
Module Installation:
Download from Releases
Install the module via #Magisk app/Fox Magisk Module Manager/MRepo
Reboot
Usage:
After first run optmization has completed, any further interaction is purely via the included dga script as a binary
in /system/(x)bin:
dga takes 2 arguments, disable or enable, though i doubt too many will be looking to enable
analytics and ad receivers, unless the disabling has unwanted effects on their system, which
is high time to include the usual disclaimer that you run this at your own risk and not even
dga enable is garaunteed to undo the changes
Uninstall Note: Uninstalling the module will not reverse the changes, if your intention is to uninstall the module and re-enable the
analytics and ad receivers, please run dga enable first
Magisk 19.3
- [MagiskHide] Значительно улучшена реализация монитора процессов, теперь это не должно вызывать 100% сбои ЦП
- [MagiskInit] Ожидание подготовки разделов к раннему монтированию, чтобы исправить бутлупы на некоторых устройствах
- [MagiskInit] Поддержка файловой системы EROFS, используемой в EMUI 9.1
- [MagiskSU] Правильно реализована изоляция пространства имён монтирования
- [MagiskBoot] Правильный расчет контрольной суммы для заголовка v2
#magisk
#Magisk fork by TheHitMan7 keeping the removed "Magisk Hide" functionality
Repository:
https://github.com/TheHitMan7/Magisk
Files:
https://github.com/TheHitMan7/Magisk-Files
Or
https://t.me/magiskcustom
Discussion:
https://t.me/custommagisk
Remember that Google corporation bought Magisk developer and extorted him to remove that functionality:
https://t.me/NoGoolag/5202
https://t.me/NoGoolag/5229
https://t.me/NoGoolag/7628
https://t.me/NoGoolag/7712