Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755

Увеличиваем скорость Python и уменьшаем потребление памяти

21.07.2022, 07:52. Показов 22268. Ответов 281
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Если не учитывать, разные советы по увеличению скорости, например замена for на while, то предлагаю знающих людей высказаться, какая из библиотек для увеличения скорости выполнения кода им больше нравится или написать впечатления от тестирования какой-то из них. Также прошу посоветовать библиотеки по уменьшению расхода оперативной памяти, если они есть.

https://nuitka.net/posts/pytho... ndows.html
https://nuitka.net/doc/download.html
https://pypi.org/project/Nuitka/

https://github.com/Nuitka/Nuitka
Build it using
python -m nuitka hello.py
Note

This will prompt you to download a C caching tool (to speed up repeated compilation of generated C code) and a MinGW64 based C compiler unless you have a suitable MSVC installed. Say yes to both those questions.
Создайте его, используя
python -m nuitka hello.py
Примечание

Вам будет предложено загрузить инструмент кэширования C (для ускорения повторной компиляции сгенерированного кода C) и компилятор C на основе MinGW64, если у вас не установлен подходящий MSVC. Скажите «да» на оба этих вопроса.
Nuitka люди используют, чтобы делать exe из кода Пайтон.

======================================== ======

https://github.com/pyston/pyston/releases

https://numba.pydata.org/numba... guide.html

https://downloads.python.org/pypy/

https://cython.org/
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.07.2022, 07:52
Ответы с готовыми решениями:

Убираем циклы, увеличиваем скорость! +тесты
Уважаемые форумчане, предлагаю вашему вниманию небольшую сборку тестов, смотрим и используем более быстрые методы Module Module1 ...

Потребление памяти
Здравствуйте! Озадачился оптимизацией потребления памяти, поэтому подскажите, каким способом можно узнать сколько некоторые части кода...

Потребление памяти
Добрый день. У меня есть код, который реализует загрузку изображений в таблицу. Я сделал две версии: 1) простая асинхронная загрузка...

281
Эксперт .NET
 Аватар для Usaga
14330 / 9424 / 1357
Регистрация: 21.01.2016
Сообщений: 35,520
13.08.2022, 12:52
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от supmener Посмотреть сообщение
Хочу уметь писать код с учетом масштабируемости.
А без учёта ты уже умеешь? Какой резон искать пути улучшения того, что ты не умеешь делать в принципе?
2
13.08.2022, 13:04

Не по теме:

Цитата Сообщение от Jabbson Посмотреть сообщение
Можно на форуме как-то пометить тему для игнорирования? Спрашиваю для друга!
Code
1
cyberforum.ru##[id^="td_threadtitle_"] > .smallfont :has-text(/^supmener$/):upward(3)

0
13.08.2022, 13:27

Не по теме:

Рыжий Лис, я старался не усложнять для ТС картину мира...

0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
15.08.2022, 11:18  [ТС]
https://pypi.org/project/grequests/

Добавлено через 5 минут
Python
1
2
3
4
5
6
from numba import jit, int32
 
@jit(int32(int32, int32))
def f(x, y):
    # Несколько тривиальный пример
    return x + y
Увидел сейчас это в примере на видео.
Также там сказано, что повторный запуск будет быстрее, так как код уже скомпилирован и находится в кэш.
Пока ещё не понял, раз данные сохраняются в кэш, почему ещё быстрее будет, если ещё написать (cache=True), в видео это объясняется на примере с расчетами.
Ещё сказано, если что-то планируется вычислять несколько дней, то полезно добавить parallel=True.
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
15.08.2022, 11:31
Цитата Сообщение от supmener Посмотреть сообщение
https://pypi.org/project/grequests/
Вы решили собрать список всех библиотек, которые никогда не освоите?
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
15.08.2022, 11:32  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
интересно конечно почему он так себя ведет
Если не учитывать, что помогаю другим, то часто именно в своих темах на форумах находил то, что не мог найти на компьютере среди сохраненных файлов и заметок. Если в дискуссии встречались умные люди и давали интересные наводки, это приводило к полезным изысканиям.
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
15.08.2022, 11:33
Цитата Сообщение от supmener Посмотреть сообщение
часто именно в своих темах на форумах находил то, что не мог найти на компьютере среди сохраненных файлов и заметок
Т.е. форум у вас вместо записной книжки? А что делать будете, если форум помрет?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
15.08.2022, 11:35
Катафалк, спокуха, это все продублировано еще минимум на двух форумах
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
15.08.2022, 17:19  [ТС]
https://numpy.org/doc/stable/r... y.sum.html
Для чисел с плавающей запятой числовая точность суммы (и np.add.reduce), как правило, ограничивается прямым добавлением каждого числа по отдельности к результату, вызывающему ошибки округления на каждом шаге. Однако часто numpy будет использовать численно лучший подход ( частичное попарное суммирование ) , что приводит к повышению точности во многих случаях использования. Эта повышенная точность обеспечивается всегда, когда не задана ось. Когда задана ось, это будет зависеть от того, какая ось суммируется. Технически, чтобы обеспечить наилучшую возможную скорость, повышенная точность используется только тогда, когда суммирование выполняется по быстрой оси в памяти. Обратите внимание, что точная точность может варьироваться в зависимости от других параметров. В отличие от NumPy, функция math.fsum Python использует более медленный, но более точный подход к суммированию. Особенно при суммировании большого количества чисел с плавающей запятой низкой точности, таких как float32, числовые ошибки могут стать значительными. В таких случаях рекомендуется использовать dtype="float64", чтобы использовать более высокую точность для вывода.
================================
https://numpy.org/doc/stable/r... diter.html
Python
1
2
3
4
5
6
from sum_squares import sum_squares_cy 
a = np.arange(6).reshape(2,3)
sum_squares_cy(a) 
array(55.0)
sum_squares_cy(a, axis=-1) 
array([  5.,  50.])
Небольшое измерение времени в IPython показывает, что сокращение накладных расходов и выделение памяти во внутреннем цикле Cython обеспечивает очень хорошее ускорение как по сравнению с простым кодом Python, так и с выражением, использующим встроенную функцию суммирования NumPy:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
a = np.random.rand(1000,1000)
 
timeit sum_squares_py(a, axis=-1)
10 loops, best of 3: 37.1 ms per loop
 
timeit np.sum(a*a, axis=-1)
10 loops, best of 3: 20.9 ms per loop
 
timeit sum_squares_cy(a, axis=-1)
100 loops, best of 3: 11.8 ms per loop
 
np.all(sum_squares_cy(a, axis=-1) == np.sum(a*a, axis=-1))
True
 
np.all(sum_squares_py(a, axis=-1) == np.sum(a*a, axis=-1))
True
===================================
https://stackabuse.com/guide-t... -function/

Эффективность и скорость
Существуют некоторые различия в скорости и эффективности между np.arange() и встроенной функцией range(). Функция диапазона генерирует числа по требованию, а не создает их заранее в памяти.

Это помогает ускорить процесс, если вы знаете, что прерветесь где-то в этом диапазоне: Например:
Python
1
2
3
for i in range(100000000):
    if i == some_number:
        break
Это будет потреблять меньше памяти, так как не все числа создаются заранее. Это также замедляет начальное построение ndarrays.

Однако, если вам все еще нужен весь диапазон чисел в памяти, np.arange() значительно быстрее, чем range(), когда в игру вступает полный диапазон чисел после их создания.

Например, если мы просто перебираем их, время, необходимое для создания массивов, заставляет np.arange() работать медленнее из-за более высоких первоначальных затрат:
Python
1
2
3
4
5
$ python -m timeit "for i in range(100000): pass"
200 loops, best of 5: 1.13 msec per loop
 
$ python -m timeit "import numpy as np" "for i in np.arange(100000): pass"
100 loops, best of 5: 3.83 msec per loop
Добавлено через 4 часа 53 минуты
А разве не в этой теме обсуждалась рекурсия и давал ссылку на видео по увеличению скорости на основе этого? Пролистал страницы и не смог найти. Парсер что-ли сделать для быстрого поиска информации в темах. Кто-то будет помогать, когда придет время, если не буду справляться?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
15.08.2022, 17:22
Цитата Сообщение от supmener Посмотреть сообщение
Кто-то будет помогать, когда придет время
Разве что кто-то из совсем молодых, мы к тому времени уже сильно состаримся
2
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
15.08.2022, 17:24  [ТС]
Не по теме:
Кликните здесь для просмотра всего текста
Парсер пролистывает страницы темы и ищет ту, на которой встречается ключевое слово. Возможно обмениваться информацией по этому поводу в личке.
0
Эксперт .NET
 Аватар для Usaga
14330 / 9424 / 1357
Регистрация: 21.01.2016
Сообщений: 35,520
15.08.2022, 17:27
Цитата Сообщение от supmener Посмотреть сообщение
Если не учитывать, что помогаю другим
Мне кажется, или никому кроме вас ваши летописи не интересны? Вы сами себе придумываете максимально оторванные от реальности задачи, и сами же ищете их решения среди каких-то маргинальных и полуэкспериментальных поделок...
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
15.08.2022, 18:32
Цитата Сообщение от supmener Посмотреть сообщение
А разве не в этой теме обсуждалась рекурсия и давал ссылку на видео по увеличению скорости на основе этого?
...
Миниатюры
Увеличиваем скорость Python и уменьшаем потребление памяти  
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
15.08.2022, 18:47  [ТС]
Это видео сохранял на компьютер. Welemir1 писал, что рекурсия не нужна. Однако сейчас занимаюсь скриптом парсера для скачивания файлов, который может зайти в папку, если ссылка не на файл, а на директорию и уже оттуда забрать.
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
16.08.2022, 17:20  [ТС]
https://gist.github.com/Guhan-... cd9ff0d5de
Многие люди утверждают, что киви медленный. Хотя это может быть правдой, это в основном связано с тем, что python медленно работает на устройствах Android. Таким образом, программист должен правильно оптимизировать свой код, чтобы создать производительное приложение.

Большая часть задержек на устройствах Android с приложениями kivy возникает из-за создания виджетов. Создание виджета остается самым медленным шагом в приложении kivy. Вот некоторые из методов, которым я следую, чтобы оптимизировать свои приложения и обеспечить скорость 60 кадров в секунду даже на старых устройствах.

Методы оптимизации:
2preload.md
1. Загрузите все ваши виджеты при запуске
Один очень простой способ повысить производительность вашего приложения — загрузить все тяжелые виджеты или даже все виджеты ваших приложений в начале вашего приложения. Однако у этого есть недостаток, вызывающий более длительное время загрузки вашего приложения.

Способ скрыть это долгое время загрузки — создать интересный экран-заставку приложения с анимацией. Buildozer поддерживает анимацию лотереи (https://github.com/tshirtman/p4a_lottie_demo , любезно предоставлено tshirtman).

Загрузка всех ваших виджетов при запуске означает, что вы можете просто добавлять свои виджеты на экраны через свой код, и влияние на производительность станет незначительным.

3animations.md
2. Используйте анимацию
Если вам нужно создавать свои виджеты во время выполнения программы, вы можете использовать анимацию, чтобы скрыть отставание. Правильно размещенные анимации, которые анимируют непрозрачность, могут использоваться, чтобы скрыть время, необходимое для загрузки виджетов. Пользователь будет воспринимать это просто как переход, а не как отставание.

Сначала создайте виджет и установите для него нулевую непрозрачность.
Добавьте виджет в макет, в котором он должен быть.
Добавьте анимацию непрозрачности этого виджета. Установите продолжительность на что-то маленькое, например, 0,2 секунды.
Вы можете пойти дальше, если вам нужно загрузить несколько экземпляров одного и того же виджета. Вместо того, чтобы загружать их все вместе. Загрузите один виджет и по завершении его анимации загрузите следующий. Держите продолжительность анимации короткой, чтобы в сумме они не стали слишком длинными.

4Animations.py
"""
Загрузка нескольких экземпляров виджета в течение определенного периода времени для предотвращения задержки.
Полезно для более сложных виджетов, чем просто кнопка.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from kivy.app import App
from kivy.lang import Builder
from kivy.clock import Clock
from kivy.uix.button import Button
from kivy.animation import Animation
 
 
KV = '''
GridLayout:
    id:container
    cols:5
    rows:20
'''
 
 
class MessengerApp(App):
 
    counter = 0
 
    def build(self):
        self.kv = Builder.load_string(KV)
        return self.kv
 
    def on_start(self):
        Clock.schedule_interval(self.btn_create,0.3)
 
    def btn_create(self,time):
        if self.counter<50:
            btn = Button(text = str(self.counter))
            btn.opacity = 0 # Set the opacity of the button to 0
            self.kv.add_widget(btn) # Add the button
            Animation(opacity = 1, duration = .25).start(btn) # Duration is < than clock duration
            self.counter +=1
 
 
if __name__ == '__main__':
    MessengerApp().run()
3. Использование модели «производитель-потребитель» для загрузки виджетов
По умолчанию при создании виджета. Kivy создаст весь виджет в одном кадре. Но если ваш виджет сложный и содержит множество виджетов и макетов, это может вызвать задержку. Это связано с тем, что kivy будет сдерживать отображение этого кадра до тех пор, пока виджет не будет полностью создан, что будет отображаться для вашего пользователя как зависание или зависание программы.

В некоторых случаях использование полосы загрузки, чтобы показать, что приложение на самом деле все еще работает, но просто загрузка данных полезна, но не доставляет удовольствия. Это заставляет пользователя ждать, пока приложение завершит свою работу, что может быть неприятно. Должно быть какое-то визуальное действие.

Вместо этого вы можете медленно загружать экземпляры ваших виджетов в несколько кадров. В основном код работает таким образом, что вы создаете виджет в фрейме, а затем следующий экземпляр в следующем фрейме и так далее. Таким образом, большие объемы данных могут быть загружены быстро.

Перейдите по этой ссылке для получения дополнительной информации (https://blog.kivy.org/2014/01/... l-in-kivy/)

Примечание. Этот метод эффективен только в том случае, если вам нужно загрузить большое количество простых виджетов. Если вам нужно загружать сложные виджеты, я бы предложил использовать анимацию, как в методе 2. Или же вы можете разбить сложный виджет на более мелкие и простые и загрузить их в несколько кадров.

6simplify.md
4. Максимально упростите свои виджеты
Это действительно болезненная задача, но она определенно того стоит. Если вы можете удалить ненужные макеты и виджеты, вы можете значительно повысить производительность своих приложений.

Некоторые советы:

Используйте Boxlayouts и GridLayouts, поскольку я обнаружил, что эти макеты могут помочь разместить ваш виджет более эффективно, чем floatlayouts.
Присоединяйтесь к лейблам вместе. Вместо того, чтобы иметь три виджета ярлыков. Соедините их вместе, чтобы сформировать единую метку, и используйте разметку для изменения стиля/цвета шрифта и любого другого свойства.
Python
1
2
3
4
5
6
7
text_to = '''[font=Roboto-Black.ttf][size=18sp][color=' +self.rgb2hex(self.text_color) + ']' + 
a[0] + 
'[/color][/size][/font]' + 
'\n' + 
'[font=Roboto-Regular.ttf][size=16sp][color=' +self.rgb2hex(self.secondary_text_color) +']' + 
a[1] + 
'[/color][/size][/font]'''
Это пример объединения двух совершенно разных сетевых этикеток в один объект этикетки. Я передаю текст как эту строку, и при отображении он будет отображаться как отдельные метки, но на самом деле это одна метка. В некоторых случаях это может сократить количество создаваемых виджетов вдвое.

7usethreads.md
5. Используйте многопоточность везде, где это возможно
Невозможно обновить пользовательский интерфейс или создать виджеты в потоке, поскольку таким образом kivy не гарантирует стабильного поведения. Вместо этого запустите свой пользовательский интерфейс в своем основном потоке и запустите другие функции вашего приложения во вторичном потоке. Это, если все сделано правильно и для правильного варианта использования, может быть очень эффективным для повышения производительности.

Проверьте здесь информацию о многопоточности Python простым способом: (https://www.geeksforgeeks.org/... hon-set-1/)

8LazyLoading.md
6 экранов ленивой загрузки
Этот метод можно использовать для значительного увеличения времени загрузки вашего приложения на Android. Он работает, загружая только главный экран, а затем медленно загружая другие экраны вашего приложения с течением времени. Код принадлежит @Kulothungan16... Проверьте его репозиторий для получения дополнительной информации (https://github.com/Kolothungan... g-template)

9Разное.мд
7 Разное
Сократите свои операторы импорта (улучшает время запуска, но не намного). Неправильный:
Python
1
import kivy
Правильно:
Python
1
from kivy import #Whatever you need to import
Будьте умнее с размещением виджетов. Попробуйте сгруппировать виджеты в один экземпляр. Не бойтесь экспериментировать с исходным кодом kivy или создавать более эффективные пользовательские виджеты. Помните, что библиотека kivy должна оставаться настраиваемой, поэтому ее можно удалить и оптимизировать лишь в ограниченном количестве. Но если вы создаете свои собственные виджеты, вы можете удалить ненужный код, который мог бы ускорить создание виджетов.
Не используйте слишком много экземпляров анимации, так как это медленно на Android.
Уменьшите значение шага анимации до 1/30, чтобы анимация обновлялась только каждый второй кадр. Полезно, особенно для анимации непрозрачности, поскольку разница вообще не видна. Вы можете снизить значение до 1/10 для анимации на основе непрозрачности.
Python
1
Animation(opacity = 1, d=.3, step = 1/30)
Попробуйте выполнить предварительную загрузку виджетов в фоновом режиме, например, когда пользователь не касается экрана в течение определенного периода времени. Затем вы можете остановить эту загрузку при следующем событии касания и т. д. Но помните, что не стоит слишком много фоновой загрузки, так как это может привести к использованию большого объема памяти и может привести к еще более медленному взаимодействию с пользователем.
Используйте виджеты как можно чаще. Вместо того, чтобы воссоздавать виджет каждый раз при изменении некоторых значений, повторно используйте уже созданные и изменяйте только необходимые значения.

Добавлено через 1 минуту
https://kivy.org/doc/stable/faq.html
Почему вы используете Python? Разве это не медленно?
Попробуем дать исчерпывающий ответ; пожалуйста, потерпите нас.

Python — очень гибкий язык, который позволяет вам делать многие вещи за (для сравнения) короткое время. Для многих сценариев разработки мы настоятельно рекомендуем быстро написать наше приложение на языке высокого уровня, таком как Python, протестировать его, а затем, при необходимости, оптимизировать.

Но как насчет скорости? Если вы сравните скорость выполнения реализаций для определенного набора алгоритмов (особенно обработки чисел), вы обнаружите, что Python намного медленнее, чем, скажем, C++. Теперь вы можете еще больше убедиться в том, что в нашем случае не стоит использовать Python. Рисование сложной графики (и мы не говорим здесь о OpenGL вашей бабушки) довольно затратно в вычислительном отношении, и, учитывая, что мы часто хотим сделать это для богатого пользовательского опыта, это было бы справедливым аргументом. Но практически в каждом случае ваше приложение тратит большую часть времени (безусловно) на выполнение одной и той же части кода. В Kivy, например, такими частями являются диспетчеризация событий и отрисовка графики. Теперь Python позволяет сделать эти части намного быстрее.

Используя Cython, вы можете скомпилировать свой код до уровня C, а оттуда ваш обычный компилятор C оптимизирует все. Это довольно безболезненный процесс, и если вы добавите некоторые подсказки в свой код, результат станет еще быстрее. Мы говорим об увеличении производительности в диапазоне от 1x до более чем 1000x (сильно зависит от вашего кода). В Kivy мы сделали это за вас и реализовали части нашего кода, где эффективность действительно имеет решающее значение, на уровне C.

Для рисования графики мы также используем современные графические процессоры, которые для некоторых задач, таких как растеризация графики, намного эффективнее, чем центральный процессор. Kivy делает все возможное для графического процессора, чтобы максимизировать производительность. Если вы используете наш Canvas API для рисования, есть даже изобретенный нами компилятор, который автоматически оптимизирует ваш код рисования. Если вы держите свой рисунок в основном на графическом процессоре, большая часть скорости выполнения вашей программы определяется не используемым языком программирования, а графическим оборудованием, которое вы для этого используете.

Мы считаем, что эти (и другие) оптимизации, которые Kivy делает для вас, уже делают большинство приложений достаточно быстрыми. Часто вы даже захотите ограничить скорость работы приложения, чтобы не тратить ресурсы впустую. Но даже если этого недостаточно, у вас все еще есть возможность использовать Cython для своего собственного кода, чтобы значительно ускорить его.

Поверьте нам, когда мы говорим, что очень тщательно все обдумали. Мы выполнили множество различных тестов и придумали несколько умных оптимизаций, чтобы ваше приложение работало гладко.
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
17.08.2022, 20:56  [ТС]
re.compile
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
17.08.2022, 21:09
re.findall
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
17.08.2022, 21:11  [ТС]
Я хотел обратить внимание, что компиляция регулярного выражения может быть полезна для увеличения скорости. А Вы что хотели показать?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
17.08.2022, 21:15
Цитата Сообщение от supmener Посмотреть сообщение
может быть полезна для увеличения скорости
... а может быть и вредна. Особенно в кривых руках.
Для увеличения скорости регулярки нужно писать грамотные регулярки. Т.о. такой вариант тебе не подходит.
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
17.08.2022, 21:30  [ТС]
...
Миниатюры
Увеличиваем скорость Python и уменьшаем потребление памяти  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.08.2022, 21:30
Помогаю со студенческими работами здесь

Потребление памяти
Подскажите, где можно посмотреть сколько памяти выделяет устройство под сторонние программы (например айпад1 - 80 мб)?

Потребление памяти
Добрый день. У меня есть программа, которая передает данные из StringGrida в таблицу SQL Server 2000. Используется ADOConnection,...

Потребление памяти
Приветствую всех! Прошу помощи в решении проблемы. Последнею неделю поигрывал в Subnautica и все было замечательно. После перерыва в пару...

Потребление памяти
В среднем, во сколько раз отличается потребление памяти у 32 и 64 битных версий явы? Используются Java EE, hibernate, spring...

Потребление памяти
Привет всем, подскажите парни.Это нормально? Мне кажется что то у меня большое потребление памяти.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
220
Ответ Создать тему
Опции темы

Новые блоги и статьи
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru