Так какие были умолчания? Я просто не понимаю, зачем сравнивать что-то, если не использовать возможности которые есть. Ну представьте что вы меряете разгон автомобиля и не переключаете скорости, потому что «в рамках тестирования - все по умолчанию»
Хотелось бы ещё разобраться что такое raise from e и raise from None, где он полезен, где необходим, где вреден. Никак не получается это уложить в голове
В приведенном отрывке видимо имеются в виду реально выполненные во времени операции, хотя на мой вкус написано коряво. Вы же утверждаете, что сложность можно оценить буквально сосчитав количество операций на языке ассемблера (то есть в коде программы).
Если кому-то интересно, в CPython есть оптимизация, что если у строки счетчик ссылок равен 1, то строка считается безопасной для изменения на месте и копирование не происходит на каждой итерации (для этого для строки изначально аллоцируется немного больше памяти, чтобы было куда её приращивать). Чтобы сломать этот механизм нужно сделать вторую ссылку на изменяемую строку:
In [3]: %%time
...: line = ""
...: for i in range(10_000):
...: line1 = line
...: line += "i"
Wall time: 3.49 ms
In [4]: %%time
...: line = ""
...: for i in range(100_000):
...: line1 = line
...: line += "i"
Wall time: 177 ms
Теперь время увеличивается в 50 раз, что ближе к O(n*n).
Кроме того, эта операция выполняется ещё и в цикле, то есть итоговая сложность этого алгоритма будет равна O(N*N).
Ох. Вы хоть проверяли?
In [1]: %%time
...: line = ""
...: for i in range(10_000):
...: line += "i"
Wall time: 1.68 ms
In [2]: %%time
...: line = ""
...: for i in range(100_000):
...: line += "i"
Wall time: 17.1 ms
Количество увеличилось в 10 раз, время увеличилось в 10 раз. Какая это сложность?
Примечание: ассемблер настолько близок к машинному коду, что фактически одному оператору ассемблера соответствует одна машинная инструкция (1:1). Таким образом, можно довольно точно оценить фактическую сложность алгоритма.
Это каким таким образом? Сложность как раз никак не связана с количеством написанных инструкций.
Объясните пожалуйста «Реальную плотность размещения VM» в Сценарий № 1 (кстати, зачем давали имена, если в статье все равно по номерам их называете?) в 1 VM на физический сервер, если физических ядер 48, а для VM нужно только 16? Должно быть 3 VM на сервер и 3 физических серверов, а никак не 8.
Попробуйте pip3 или python -m pip или python3 -m pip. Что-то из этого должно сработать
Эээ? Установка через homebrew:
brew install
. Установка через pip:pip install
¯ \ _ (ツ) _ / ¯
При этом
brew
ставится отдельно, pip уже стоит вместе с системой.Не увидел в stats частоты ядер и потребление мощности в ваттах
Один раз и читаю показания которые выводятся в stdout
Можно посмотреть как это делает macmon. Но учитывайте, что он тоже это делает неправильно: https://github.com/vladkens/macmon/issues/10
Неправильно. Лучше все же прочитать статью )
А issue закинуть некуда, это не опенсорс. Если кто-то покажет статью разработчикам, буду рад.
Так какие были умолчания? Я просто не понимаю, зачем сравнивать что-то, если не использовать возможности которые есть. Ну представьте что вы меряете разгон автомобиля и не переключаете скорости, потому что «в рамках тестирования - все по умолчанию»
Хотелось бы ещё разобраться что такое
raise from e
иraise from None
, где он полезен, где необходим, где вреден. Никак не получается это уложить в головеТак вы включали Virtualization framework в Docker Desktop?
Мне кажется вам лень было зайти в настройки
Спасибо за 3 минуты потраченного времени на пролистывание этого материала чуть проще чем «Простой»
То есть не дает, потому что алгоритм и так уже O(n)
Речь не про варианты, а про подходы. Так то
line = "i" *10_000
ещё в 500 раз быстрееВ приведенном отрывке видимо имеются в виду реально выполненные во времени операции, хотя на мой вкус написано коряво. Вы же утверждаете, что сложность можно оценить буквально сосчитав количество операций на языке ассемблера (то есть в коде программы).
Проверил отдельно в python 3.12 и jupyter-notebook, результат тот же что у меня получился раньше.
Если кому-то интересно, в CPython есть оптимизация, что если у строки счетчик ссылок равен 1, то строка считается безопасной для изменения на месте и копирование не происходит на каждой итерации (для этого для строки изначально аллоцируется немного больше памяти, чтобы было куда её приращивать). Чтобы сломать этот механизм нужно сделать вторую ссылку на изменяемую строку:
Теперь время увеличивается в 50 раз, что ближе к O(n*n).
Ох. Вы хоть проверяли?
Количество увеличилось в 10 раз, время увеличилось в 10 раз. Какая это сложность?
Это каким таким образом? Сложность как раз никак не связана с количеством написанных инструкций.
Объясните пожалуйста «Реальную плотность размещения VM» в Сценарий № 1 (кстати, зачем давали имена, если в статье все равно по номерам их называете?) в 1 VM на физический сервер, если физических ядер 48, а для VM нужно только 16? Должно быть 3 VM на сервер и 3 физических серверов, а никак не 8.
Ну как, действительно дело было в недостаточном сопровождении PR?