Скорее всего уже слышали, что складывать строки через + это плохая практика. Падение производительности, и всё такое. Без лишних слов, давайте измерять:
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
Геотермальная энергия, когда же уже?
Три года назад издание Vox опубликовало классную статью "Geothermal energy is poised for a big breakout", в которой дается обзор этого источника энергии и технологий для добычи геотермальной энергии. Очень интересно и познавательно, почитайте - ссылка! Статья написана в позитивном ключе, что мол даже 0.1% тепловой энергии Земли достаточно, чтобы обеспечить энергией все человечество на 2 миллиона лет вперед, и технологии на подходе.
Неделю назад, это же издание опубликовало более отрезвляющий материал "Is the future of energy ... pouring water on hot rocks in the ground?", написанный по следам успехов компании Fervo, которая впервые добилась результатов по генерации электричества в промышленных масштабах с помощью технологии усоверщенствованных геотермальных систем (ESG), я писал об этом тут. Авторы пишут, что технология конечно работает, но стоимость решения на данный момент $450 за киловатт, в то время как ветер и солнце дают $30-50 за киловатт. Пока технология добычи геотермальной энергии настолько неэфективна, что при циркуляции воды внутри системы, ее потери составляют до 20%, что собственно, даже дороже конечного продукта, поставляемого электричества. Статья.
Если кто-то хочет начать разбираться в том как работает добыча энерегии с помощью геотермальных систем, я советую прочитать обе статьи. Вторая, конечно, своего рода ложка дегтя. Но если посмотреть с другой стороны, инженеры, работающие в геотермалке должны трезво смотреть на мир и попытаться найти технологические решения, которые действительно помогут в масштабировании технологии.
#geothermal#climate
Нефтяные скважины для геотермальной энергии
В Оклахоме тысячи никому не нужных нефтегазовых скважин. Стоят себе. Их нужно законсервировать или использовать для извлечения энергии. Товарищи из Университета в Оклахоме сделали инструмент, для быстрой выборки нефтяных скважин, которые могут быть перепрофилированы в геотермальные.
В основе инструмента известные статистические методы: метод K-ближайших соседей и Кригинг (гауссовские процессы). Для оценки возможных кандидатов анализировались три фактора: температура, близость к конечному пользователю и целостность скважины.
Тема интересная. Департамент Энергетики США сейчас выделяет гранты проектам за доступ к геотермальному потенциалу заброшенных нефтяных и газовых скважин, например ICE Thermal Harvesting или Transitional Energy.
#geothermal#startup#oil&gas
Геотермальный прорыв Fervo Energy
Тим Латимер, CEO геотермального стартапа Fervo Energy, сообщил об успешном завершении полномасштабного пилотного проекта "Project Red", который способен генерировать 3.5 мегаватта электричества. Project Red будет подключен к сети и запитает в том числе гугловские дата центры.
История крутая. Еще 10 лет назад Тим работал буровым инженером и понял, что нефтегазовые технологии достаточно продвинутые и дешевые, чтобы их применить в создании усовершенствованных геотермальных систем (ESG), на второй картинке. Это когда после гидроразрыва пласта закачивают холодную воду, а выкачивают горячую. С ним мало кто соглашался и он пошел в Стэнфорд поучиться, где написал, научные работы, подтверждающие его гипотезы и нашел сооснователя Fervo Energy. Шесть лет они выхватывали кучу хейта, так как технология ESG считалась слишком сырой и не готовой для коммерциализации.
И вот недавно, оба кофаундера выпустили отчет, где отчитались об успешном завершении первого в своем роде ESG пилотного проекта в Северной Неваде - Project Red. Бурили в вулканические породы при температурах около 200 градусов по Целльсию. В общем начался опять движ в геотермалке. Стоит сказать, что затраты на получение энергии с помощью этой технологии все еще слишком велики.
Вот тут можно почитать подробнее.
#geothermal#technology#drilling#decarbonization