
- Главная
- Каталог
- Интернет технологии
- Программирование
Программирование
Статьи о программировании, обучающие видео IT, книги.
Статистика канала
x может сначала быть числом 5, а через секунду стать строкой "Привет".
Удобно? Да. Опасно? Еще как! 💣
Представьте функцию:
def process(data):
return data * 2
{}
Что такое data? Число? Строка? Список?
• Если число 10 -> вернет 20.
• Если строка "Hi" -> вернет "HiHi".
• Если список [1] -> вернет [1, 1].
Чтобы не гадать, используйте Аннотации типов (Type Hints).
✅ Как это выглядит:
# Аргумент name - строка, возраст - число
# Функция возвращает строку (-> str)
def greeting(name: str, age: int) -> str:
return f"Привет, {name}! Тебе {age} лет."
{}
🚀 Зачем это нужно?
1. Автодополнение (IDE): Ваш редактор (PyCharm, VS Code) сразу поймет, что name - это строка, и предложит методы .upper(), .split() и т.д. Без аннотаций он будет "слепым".
2. Документация: Коллегам не нужно читать весь код функции, чтобы понять, что в неё передавать.
3. Поиск ошибок: Инструменты вроде mypy проверят код до запуска и скажут: "Эй, ты пытаешься передать число в функцию, которая ждет строку!"
💡 Продвинутый уровень (Python 3.10+):
Можно указывать сложные структуры.
# Список чисел
def sum_list(numbers: list[int]) -> int:
return sum(numbers)
# Или число, ИЛИ строка (Union)
def magic(val: int | str):
print(val)
{}
⚠️ Важно: Python игнорирует аннотации при запуске! Это просто "подсказки". Если вы напишете x: int, но передадите строку, программа запустится (и, скорее всего, упадет с ошибкой внутри). Аннотации это для вас и редактора, а не для интерпретатора.
Начните добавлять типы в свои функции, и вы увидите, насколько удобнее станет писать код!
std::string: Почему короткие строки работают быстрее? (SSO)
Многие думают, что std::string - это всегда:
1. Выделение памяти в куче (new / malloc).
2. Копирование данных туда.
3. Освобождение памяти (delete) в деструкторе.
Это медленно. Но если вы создадите строку "Hello", никаких аллокаций не произойдет. Почему?
Благодаря Small String Optimization (SSO).
⚙️ Как это работает?
Стандартная строка (на 64-битной системе) обычно занимает 24 или 32 байта (размер самой структуры sizeof(std::string)). В ней хранятся указатель на данные, размер и вместимость (capacity).
Разработчики STL подумали:
"Зачем нам тратить эти байты на указатели, если строка очень короткая? Давайте хранить текст прямо внутри объекта!"
Внутри std::string используется union:
void Benchmark() {
// 🚀 БЫСТРО (SSO):
// Память не выделяется. Строка лежит на стеке, как char[16].
std::string shortStr = "Hello World";
// 🐢 МЕДЛЕННО (Heap Allocation):
// Текст не влезает в буфер SSO.
// Вызывается malloc/new, данные летят в кучу.
std::string longStr = "Hello World is a remarkably long phrase";
}
{}
📉 Почему это важно для производительности?
1. Нет аллокаций: new и delete - это системные вызовы, они дорогие. SSO их исключает.
2. Cache Locality: Данные лежат на стеке, рядом с другими локальными переменными. Процессор обожает линейный доступ к памяти (L1 Cache), а прыжки в кучу (Heap) - ненавидит.
💡 Совет: Если вы оптимизируете структуру данных и у вас много коротких ID или имен (до 15 символов), обычный std::string будет работать великолепно без всяких хитростей. Не нужно менять его на char[] "для скорости" без замеров.
#cpp
Отзывы канала
всего 10 отзывов
- Добавлен: Сначала новые
- Добавлен: Сначала старые
- Оценка: По убыванию
- Оценка: По возрастанию
Каталог Телеграм-каналов для нативных размещений
Программирование — это Telegam канал в категории «Интернет технологии», который предлагает эффективные форматы для размещения рекламных постов в Телеграмме. Количество подписчиков канала в 4.3K и качественный контент помогают брендам привлекать внимание аудитории и увеличивать охват. Рейтинг канала составляет 35.9, количество отзывов – 10, со средней оценкой 5.0.
Вы можете запустить рекламную кампанию через сервис Telega.in, выбрав удобный формат размещения. Платформа обеспечивает прозрачные условия сотрудничества и предоставляет детальную аналитику. Стоимость размещения составляет 1958.04 ₽, а за 26 выполненных заявок канал зарекомендовал себя как надежный партнер для рекламы в TG. Размещайте интеграции уже сегодня и привлекайте новых клиентов вместе с Telega.in!
Вы снова сможете добавить каналы в корзину из каталога
Комментарий