Перейти к содержимому

Как ускорить программу с

  • автор:

Как ускорить работу 1С

Восемь вполне рабочих способов увеличить быстродействие программы 1С.

Когда программу 1С впервые устанавливают на компьютер, она, как правило, работает быстро и без задержек. Но проходит время, данные накапливаются, база увеличивается в размере. Добавляются новые пользователи, компьютер со временем устаревает и перестает удовлетворять системным требованиям. Все эти факторы негативно влияют на быстродействие. В этой статье, на примере программы 1С:Бухгалтерия 3.0, рассмотрим несколько способов ускорить работу программы.

Перед выполнением действий, описанных ниже, обязательно сделайте архивную копию базы.

Настройка регламентных и фоновых заданий в 1С

1С:Бухгалтерия помимо выполнения основной работы запускает некоторые операции в фоновом режиме (выполнение таких операций происходит незаметно для пользователя), которые ведут к снижению быстродействия программы.

Откройте перечень регламентных и фоновых заданий: раздел Администрирование –> Обслуживание –> Регламентные операции –> Регламентные и фоновые задания .

Регламентные и фоновые задания

Нужно проанализировать работу пользователей и определить какие фоновые задачи можно оставить в автозапуске, а какие отключить. Например, если на предприятии не ведутся операции, связанные с иностранной валютой, то нет необходимости постоянно отслеживать курсы валют и т.п.

Рассмотрим, как отключить автоматическую загрузку курсов валют. Установим курсор на нужную строку и сделаем двойной щелчок мышью.

Регламентные задания

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

Рассмотрим, как настроить расписание загрузки курсов валют. Нужно установить курсор на нужную строку и сделать двойной щелчок мышкой. Галка включено должна быть установлена. Нажать на ссылку Расписание . В открывшемся окне перейти на нужную закладку, например, дневное, установить время начала (на скриншоте 12:00) и нажать Ок . При такой настройке курсы будут загружаться каждый день с 12:00.

На закладке Фоновые задания можно отменить уже выполняющееся фоновое задание нажав по соответствующей кнопке. Если появится сообщение, как на скриншоте, просто нажать ОК .

Фоновые задания

Тестирование и исправление информационной базы

Войдите в конфигуратор. Откройте меню Администрирование –> тестирование и исправление . Установите необходимые флажки (можно установить все) и нажмите выполнить .

Тестирование и исправление

Некоторые варианты проверки будут понятны только техническим специалистам, но тем не менее рассмотрим их подробнее:

  • Реиндексация таблиц информационной базы – перестраивает индексы таблиц и повышает быстродействие работы программы;
  • Проверка логической целостности информационной базы –включает в себя ряд стандартных проверок целостности прикладных объектов, например, проверка того, что все объекты метаданных в пределах одной ветки имеют уникальные имена;
  • Проверка ссылочной целостности информационной базы – проверка целостности базы данных для обнаружения «битых» ссылок. Например, если какой-либо объект конфигурации ссылается на несуществующий объект. Если выбираем такой вариант, то дополнительно становятся доступны настройки:
    • При наличии ссылок на несуществующие объекты означает, что при обнаружении «битых» ссылок, алгоритм будет обрабатывать такие ссылки в соответствии с выбранным вариантом;
    • При частичной потере данных объектов означает, что остаток данных достаточен для восстановления данных какого-либо объекта.

    Процедуру тестирования и исправления информационной базы 1С можно выполнять только в монопольном режиме. При отметке всех галок тестирование может происходить достаточно долгое время.

    Вас может заинтересовать

    • Разбор частых ошибок при работе с 1С
    • Про тонкий и толстый. (клиенты) в 1С
    • Распределенные информационные базы РИБ

    Индексация полнотекстового поиска (либо отключение)

    Про назначение полнотекстового поиска ранее я уже снял видеоурок, рекомендую его посмотреть.

    Если после просмотра видео вы решите, что он вам не требуется, просто отключите его. Для этого зайдите в раздел Администрирование –> Общие настройки –> Поиск данных и снимите флажок использования.

    Полнотекстовый поиск

    Если же хотите его использовать, тогда обновите индекс. Для этого нажмите на ссылку Настроить . В открывшимся окне нажмите на кнопку Обновить индекс .

    Обновление индекса

    Обновление платформы и конфигурации

    Работа программы может замедлится из-за старых релизов платформы. Соответственно, если обновлять саму конфигурацию, то и релиз платформы должен ей соответствовать. Из верхнего выходящего списка выберите О программе .

    О программе

    • 1С:Предприятие 8.3 (…) – версия платформы;
    • Бухгалтерия предприятия, редакция 3.0 (…) – версия релиза.

    Версии

    Проверить наличие обновлений и самостоятельно обновить программу можно из меню Администрирование –> интернет поддержка и сервисы –> обновление версии программы . При затруднениях рекомендуется обратиться в обслуживающую организацию.

    Запуск в Тонком клиенте

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

    Основной режим запуска

    Тестирование физической целостности утилитой chdbfl

    Нужно зайти в папку с установленной платформой в конечную папку bin . Запустить файл chdbfl , прописать путь к базе, поставить галку исправлять обнаруженные ошибки и нажать выполнить .

    Исправление ошибок

    После окончания тестирования окно закрыть и проверить базу на работоспособность.

    Отключение ненужной функциональности

    Меню Администрирование –> Функциональность . Внимательно проверить все закладки и отключить неиспользуемые функции.

    Функциональность

    Например, если в организации нет экспорта или производства, эти настройки можно отключить. (включить можно в любой момент).

    Свертка информационной базы

    Свертка информационной базы 1С – это обработка документов и регистров, при которой происходит формирование документов ввода остатков на определенную дату (дату свертки) и удаление документов, которые не используются, и движений по регистрам (сведений, накопления, бухгалтерии) до даты свертки включительно. Свертка информационной базы выполняется, чтобы сократить объем данных в рабочей базе и увеличить скорость работы системы.

    Данные рекомендации вполне можно сделать самостоятельно. В статье описано именно действия с программой. Помимо них для ускорения работы 1С можно настроить используемую антивирусную программу, проверить параметры компьютера и при необходимости увеличить его характеристики или заменить на новый, установить твердотельный жесткий диск SSD.

    Дмитрий Медведков 1С

    Дмитрий Медведков программист, консультант 1С
    Работаю в 1С с 2012-го, специализируюсь на УТ 11
    Имею 10 квалифиционных сертификатов 1C:Профессионал, 1С:Специалист и 1С:Специалист-консультант

    Несколько советов по оптимизации кода на C++ ⁠ ⁠

    1) Вместо использования цикла for() быстрее использовать цикл while(). По той простой причине, что while() был придуман раньше, чем for(), то следовательно while() более низкоуровневый, а следовательно за абстрагирование мы расплачиваемся меньше, что ускоряет наш код.

    Несколько советов по оптимизации кода на C++ Программирование, C++, Оптимизация, 1 апреля, Длиннопост

    2) если честно, то данной код можно ускорить ещё больше. поскольку оператор ++ является неоптимальным, лучше использовать его аналог =.

    Так делали ещё наши деды на Паскале и Фортране, получая код, который просто летал. Я вам больше скажу, при программировании процессоров, работавших на советских космических станциях использовали именно этот оператор. И ведь где, а там нужно высокая эффективность кода.

    Несколько советов по оптимизации кода на C++ Программирование, C++, Оптимизация, 1 апреля, Длиннопост

    3) Если вам нужно сделать вечный цикл, например как при поиски в ширину, лучше писать while(!false) вместо обычного while(true). поскольку процессор быстрее воспринимает команды с нулями, то и отрицание нуля он будет обрабатывать быстрее, нежели просто единицу. Это сильно ускоряет ваш проход по циклу.

    Несколько советов по оптимизации кода на C++ Программирование, C++, Оптимизация, 1 апреля, Длиннопост

    4) Описание типа данных для каждой отдельной переменной отдельно также уменьшает затраты процессорного времени. Поскольку вы перекладываете часть работы процессора на себя. Как бы расписывая всё для каждой переменной в отдельности, тем самым «разжёвывая» код, процессору приходиться декодировать значительно меньше данных.

    Несколько советов по оптимизации кода на C++ Программирование, C++, Оптимизация, 1 апреля, Длиннопост

    5) Ну и последний совет по оптимизации заключается в том, чтобы сократить потребление оперативной памяти при исполнении программы. ОБЯЗАТЕЛЬНО удаляйте все лишние пробелы, табуляции, переходы на новые строки и комментарии. Именно они зачастую являются причиной потребления большей части оперативки и кеша процессора. Вы сами можете увидеть, как код стал более компактным и более читабельным. Если ваш код будет читать другой программист, то на его экранном пространстве также он будет занимать меньше места, соответственно полезного кода будет помещаться больше.

    Несколько советов по оптимизации кода на C++ Программирование, C++, Оптимизация, 1 апреля, Длиннопост

    Несколько советов по оптимизации кода на C++ Программирование, C++, Оптимизация, 1 апреля, Длиннопост

    55 постов 4.7K подписчика

    Правила сообщества

    Соблюдайте правила Pikabu:

    Помимо этого ЗАПРЕЩЕНО:

    — Размещать в сообществе посты стиля «Подскажите как удалить вирус», «Подскажите как установить программу», «Подскажите как починить монитор/телевизор/мышь/тостер/стиральную машину» или «Напишите за меня лабу в универ». Пожалуйста размещайте такие посты вне этого сообщества или в соответствующих для этого сообществах.

    Существенный недостаток нового дизайна пикабу: пока я дочитал до тегов, у меня уже стул сгорел.

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

    А я почти поверил, что этот бред серьезно написан 🙂

    Срочно переводи это на индийский

    Прочитал, влепил минус, начал писать гневный комментарий, затем у видел тег. Не пугай так больше.

    DENUVO слила VMProtect?? Крупнейшая утечка⁠ ⁠

    DENUVO слила VMProtect?? Крупнейшая утечка Denuvo, Утечка данных, Скандалы интриги расследования, Vmprotect, Vmp, IT, Полезное, Программист, Программирование, Windows, C++, Cracklab, Длиннопост

    Буквально несколько часов назад, на одном из китайских форумов неизвестные анонимусы в масках выложили в открытый доступ исходные коды известного Российского протектора VMProtect последних версий (3.2-3.5.1). Штаб-квартира фирмы VMPSoft находится в городе Екатеринбург на улице 8марта.

    DENUVO слила VMProtect?? Крупнейшая утечка Denuvo, Утечка данных, Скандалы интриги расследования, Vmprotect, Vmp, IT, Полезное, Программист, Программирование, Windows, C++, Cracklab, Длиннопост

    Пожалуй, наибольшую известность VMProtect получил после ГРАНДИОЗНОГО скандала с разработчиками DENUVO Software Solution Gmbh. Напоминаем, что последняя контора сама умудрилась незаконно, с нарушением авторского права, использовать в 2014-2015 годах исходные коды VMProtect версий 2.x-3.0.x банально переименовав их в DENUVO v1-v2, что в итоге было вскрыто сначало при взломе (cracklab), а затем, под давлением хакерской общественности, в марте 2017 года признано самими разработчиками VMPsoft в эпичном посте

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

    Примечательно, что публичная версия программы DENUVO Profiler для анализа защиты, выпущенной на том же cracklab, подходила для анализа, как самого VMProtect, так и DENUVO.

    Что известно на данный момент про саму утечеку

    1) Оригинальный архив утечки разбит на три части, однако его успели скачать только два-три анонимуса. Сейчас распространяется в сети целый перепакованный архив.

    DENUVO слила VMProtect?? Крупнейшая утечка Denuvo, Утечка данных, Скандалы интриги расследования, Vmprotect, Vmp, IT, Полезное, Программист, Программирование, Windows, C++, Cracklab, Длиннопост

    2) В перепакованной версии отсутвуют некоторые важные файлы, прежде всего, механизмы работы VMProtect на Microsoft Windows. Возможно, эти файлы были вырезаны намеренно из оригинала первыми, кто скачал архив. По крайней мере, в андеграунде идёт их активный поиск.

    DENUVO слила VMProtect?? Крупнейшая утечка Denuvo, Утечка данных, Скандалы интриги расследования, Vmprotect, Vmp, IT, Полезное, Программист, Программирование, Windows, C++, Cracklab, Длиннопост

    3) Уже прошел слух, что к сливу могут быть причастны разработчики DENUVO (бывшие). По непотвержденным данным, один из быаших разработчиков DENUVO участвует в команде EMPRESS.

    4) Годом ранее были слиты валидные сертификаты для цифровой подписи.

    Как это повлияет на взлом игр в будущем?

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

    Тем не менее это упростит взлом защищенных им игр. Причём самым существенным образом, если ключевые файлы исходного кода VMProtect под Windows найдутся публично или будут переданы той же EMPRESS неофициально (второй вариант наиболее вероятен). Как минимум, такой крупнейший слив подорвет доверие разработчиков игрушек к продукту VMProtect, заставив его разработчиков фактически начать с нуля разработку новой версии, а простые геймеры получат менее тормозящие игрушки.

    За что люди любят «плюсы»?⁠ ⁠

    За что люди любят «плюсы»? IT юмор, Программирование, IT, Картинка с текстом, C++, Плюсы

    Это петля оптимизации⁠ ⁠

    Это петля оптимизации

    Следующая книжка будет «Вы уже знаете С++ на уровне подсознания»⁠ ⁠

    Следующая книжка будет «Вы уже знаете С++ на уровне подсознания» IT юмор, Программирование, IT, Картинка с текстом, C++, Книги

    Возможности и потребности⁠ ⁠

    Возможности и потребности

    Лучшее объяснение про оптимизацию современного софта⁠ ⁠

    Лучшее объяснение про оптимизацию современного софта Комментарии на Пикабу, Оптимизация, Программирование, Юмор, Технологии

    Автоматизация Excel с помощью VBA на примере графика отпусков⁠ ⁠

    (Офисной оптимизации пост (теперь уже с примерами))

    В прошлом своём посте (где рассматривал, что есть VBA в Excel и зачем это может пригодиться) целых 137 человек подписалось на меня, в комментариях были призывы к каким-нибудь примерам использования VBA, да и обещал я @Tiafreed подкинуть материалов для ВКР, так что набросал за ночь простенький (в сотню строк кода без использования массивов, классов и т.д.) файлик в Excel с VBA модулем. Пост разделю условно на две части: для пользователей, кому интересно просто посмотреть как выглядит, что делает, плюс скачать, поиграться и для продвинутых пользователей, кому интересно как это работает и как настроить подобное под себя. Цель поста — показать возможности VBA (частично), предложить интересный вариант реализации достаточно распространённой задачи по расчёту отсутствия сотрудников.

    Если формат поста зайдёт, то в следующий раз набросаю пример, как формировать Word документы из списка данных в Excel, используя шаблон и пользовательскую форму (и не используя ублюдскую рассылку ИМХО).

    Автоматизация Excel с помощью VBA на примере графика отпусков Microsoft Excel, Программирование, Vba, Visual Basic, Офис, Оптимизация, Microsoft office, Длиннопост

    Стартуем. Что нам нужно? Чтобы мы вносили людей в таблицу, забивали им отпуск, по нажатию одной кнопки машина рассчитывала нагрузку на каждый отдел (и организацию в целом) на каждый день и выделяла это графически. Бонус — построить график из полученных данных и научить выпадающий список самому подставлять данные в него прямо с листа двумя кликами.

    Итак, какой порядок. Если запуск макросов разрешен, совместимость не барахлит, молния не ударила в системник после запуска файла и удача нам благоволит, то можем начинать. Сначала вносим данные (тут важное уточнение, даты я вношу в текстовом формате для удобства работы и совместимости).

    Автоматизация Excel с помощью VBA на примере графика отпусков Microsoft Excel, Программирование, Vba, Visual Basic, Офис, Оптимизация, Microsoft office, Длиннопост

    *Все персонажи вымышлены, совпадения случайны

    Дальше идём на другой лист, нажимаем кнопку

    Автоматизация Excel с помощью VBA на примере графика отпусков Microsoft Excel, Программирование, Vba, Visual Basic, Офис, Оптимизация, Microsoft office, Длиннопост

    После чего идут расчёты какое-то время (у меня это где-то половина секунды)

    Автоматизация Excel с помощью VBA на примере графика отпусков Microsoft Excel, Программирование, Vba, Visual Basic, Офис, Оптимизация, Microsoft office, Длиннопост

    Машина рапортует нам об успешном завершении своей миссии, идём смотреть, что вышло.

    Автоматизация Excel с помощью VBA на примере графика отпусков Microsoft Excel, Программирование, Vba, Visual Basic, Офис, Оптимизация, Microsoft office, Длиннопост

    (Да, дизайнер я говно (как и VBA кодер в общем-то, но не об этом)) оформить самому никогда не сложно, главное, что на каждый день для каждого человека машина посчитала отпуска (можно любое другое отсутствие), вычислила цифры, разбила по отделам и отразила это графически, идём на главную

    Автоматизация Excel с помощью VBA на примере графика отпусков Microsoft Excel, Программирование, Vba, Visual Basic, Офис, Оптимизация, Microsoft office, Длиннопост

    Тут всё ещё проще, кнопка для запуска, табличка с примитивными расчётами (формула МАКС) и график на 366 дней который можно с лёгкостью оформить самому и с помощью которого отлично видны провалы и пики нагрузок. Нажатием на выпадающий список, мы выбираем отдел по которому выводятся данные. Вот и всё, просто и удобно. Набросал за пару ночных часов. Сразу предупреждаю, что я это не предлагаю, как готовый продукт (успешное бизнес-решение ваших кадровых проблем), просто накидал маленький пример и делюсь им с вами, потому ответственность за его использование и обслуживание не несу, но если есть желание доработать его в своих целях, готов подсказать и помочь. Да, если возникла ошибка, вероятнее всего, что формат даты/числа нарушен, защиту от дурака не ставил, ибо цели чисто демонстрационные, но если вдруг мой косяк (протестить нет возможности) перезалью и ссылку в комментарии кину. Вот сам файл (на свой страх и риск :D, никаких гарантий, что будет работать). https://yadi.sk/d/lsRdKL8wQ42FFw (и не забываем включить макросы)

    Сразу отвечу на вопрос — нахрена на VBA можно же на формулах? Да, можно, но так динамично (легко добавлять/убирать людей/отделы), наглядно и расчёт каждого дня формулами будет очень сильно грузить проц, а так мы считаем лишь раз, когда кнопку нажимаем.

    Тэкс. Теперь вторая часть, в принципе, дальше можно не читать, так, для очистки совести её пишу. Кому интересно, как это работает или как вообще выглядит VBA на практике. Всё просто, в основе лежит вот эта строка (в ней мы будем искать колонку с датой отпуска и уже в ней работать)

    Автоматизация Excel с помощью VBA на примере графика отпусков Microsoft Excel, Программирование, Vba, Visual Basic, Офис, Оптимизация, Microsoft office, Длиннопост

    Сначала мы подготавливаемся, что-то где-то очищаем, что-то добавляем (всё в общем-то закомментил) и сортируем строки по отделам

    Автоматизация Excel с помощью VBA на примере графика отпусков Microsoft Excel, Программирование, Vba, Visual Basic, Офис, Оптимизация, Microsoft office, Длиннопост

    Потом запускаем цикл перебора строк с сотрудниками, в этом цикле для каждого работника мы проверяем, является ли он началом нового отдела, если да, то делаем разделитель, если нет — кладём болт и идём дальше, дальше рассчитываем отпуска, каким образом? Берём дату начала и ищем её в строке с датами, находим (или не находим и крашимся, если закосячили, не стал пилить защиту от дурака), берём эту ячейку как точку начала, прибавляем количество дней отпуска, отнимаем один (ибо включительно) и это наша точка окончания, объединяем эти ячейки, окрашиваем, в этих столбцах делаем простые расчёты (+1 к каждому дню и перерасчёт процентовки). После прохода по всем персонажам просто копируем полученные цифры на главную страницу, чтобы подставлять их в график. Всё, почти.

    Автоматизация Excel с помощью VBA на примере графика отпусков Microsoft Excel, Программирование, Vba, Visual Basic, Офис, Оптимизация, Microsoft office, Длиннопост

    Автоматизация Excel с помощью VBA на примере графика отпусков Microsoft Excel, Программирование, Vba, Visual Basic, Офис, Оптимизация, Microsoft office, Длиннопост

    И простейший обработчик для выпадающего списка — просто вставляем в строку из которой берёт данные график данные из нужной нам строки. Рассчитываем её как номер строки начала (у нас 22) + номер элемента выпадающего списка (нумерация идёт с нуля у listindex)

    Автоматизация Excel с помощью VBA на примере графика отпусков Microsoft Excel, Программирование, Vba, Visual Basic, Офис, Оптимизация, Microsoft office, Длиннопост

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

    Не только финансовая система может держаться на Excel⁠ ⁠

    (Офисной оптимизации пост, точнее, об одном из инструментов этой самой оптимизации)

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

    Не только финансовая система может держаться на Excel Microsoft Excel, Программирование, Офис, Оптимизация, Visual Basic, Макрос, Microsoft Word, Microsoft office, Длиннопост

    Так вот, многие даже и не подозревают, сколько всего может на нём держаться, — не только российская мировая финансовая система, но и, например, целый каскад программного обеспечения в какой-нибудь организации. Сам я работал айтишником в одной организации и ввиду специфики работы всей компании, довелось разрабатывать ПО (программное обеспечение) на Excel (да, на этих страничках с табличками, где, как я думал ещё в школьные годы, проводятся всякие узкоспециализированные записи, ну кто будет оформлять документ в какой-то неудобной таблице), профи в области Excel себя не считаю, ибо есть куча белых пятен вроде финансовых функций и надстроек в которых всегда найдутся люди, которые разбираются лучше меня. Но это так, отступление.

    Сами по себе формулы — очень мощный инструмент, на умении их использовать вывезло столько оптимизаторов, не владеющих программированием, что, думаю, нет еще офиса, где какой-нибудь местный Кулибин в обеденный перерыв не замутил еще какую-нибудь узкоспециализированную считалку для отдела. Но, работая с большими массивами возникает ряд проблем в использовании формул: относительность (ты получаешь не строку информации в базе данных, а динамичный результат вычисления) и оптимизация. Да, оптимизация на нескольких тысячах строк с десятком колонок и, допустим, парой связанных таблиц, это беда. Такая связка на i3 4гб оперативы просто будет повергать бедный офисный комп в ужас, заставляя его терять сознание при каждом пересчете и вылетать, если ты нарушил священный ритуал пятиминутного сохранения (знал я одного мужика, у него была такая формульная портянка, что сохранял базу он лишь два раза в день, перед обедом и уходя домой, ибо на сохранение уходило минут 20, ненавидели мы его все, ибо, уходя в отпуск, он оставлял это чудище кому-то из нас). Специфика работы была такова, что интернета у нас не было, а стороннее ПО нельзя — пользуйтесь чем дали. Окей, но автоматика же нужна, без неё никуда, потому пришлось использовать то, что есть и открывается это:

    Не только финансовая система может держаться на Excel Microsoft Excel, Программирование, Офис, Оптимизация, Visual Basic, Макрос, Microsoft Word, Microsoft office, Длиннопост

    Разработчикам показалось мало создать мощный инструмент формул, они решили впаять в и так могущественное ПО целый язык программирования (точнее его диалект) VBA (Visual Basic for Application), возможность подключать модули с других языков, использовать API (хоть и работает это ИМХО через жопу) и встроенную среду разработки (а это означает, что вообще ничего не надо качать, если у Вас есть офис, значит все что нужно, чтобы стать мамкиным программистом уже есть). Но что нам это даёт? Огромные (ну это как посмотреть) возможности для разработки ПО, преимущественно узкоспециализированного, без использования чего-либо кроме Excel; базы данных? О чём речь, Excel — это и есть БД (то ещё извращение, но для утонченных можно связать с Access или Sql), возможность проводить расчёты (циклы, тонкие переборы, фильтрация) над большими массивами информации в кустарных условиях, использовать встроенные библиотеки для работы с другими приложениями (самое важное — MS Word), возможность наконец применить Visual Basic, который ты учил лет 20 назад, а он нигде так и не пригодился, ну и самое главное, научиться основам программирования, если ты что-то шаришь, но твои лучшие успехи — верстка шаблонов сайтов на HTML, CSS с вкраплениями PHP. Также это нам даёт возможность кодить на ведре (прям совсем ведре-ведре). VB хоть и относится к ООП, но де-факто работа в нём редко сводится к пользовательским классам, всяким тонкостям и т.д., в основном он ощущается как скриптовый язык, работа приходит к чему:

    Не только финансовая система может держаться на Excel Microsoft Excel, Программирование, Офис, Оптимизация, Visual Basic, Макрос, Microsoft Word, Microsoft office, Длиннопост

    накидать разных элементов управления (это если у нас пользовательская форма, если просто код, то вообще просто запихать всё в модуль) и привязать к ним обработчики событий. Вкурил в циклы, условные конструкции, чутка простого синтаксиса и на рабочий телефон уже звонят из Майкрософт и предлагают тебе перейти к ним (Нет). Но не буду вдаваться в разработку ведь не об этом пост, что из этого можно получить на практике? Рабочие программы с базами данных и пользовательским интерфейсом (чтобы упростить и ограничить взаимодействие пользователя с данными) или скрипты для обработки целой тонны упорядоченной (а может и нет, слава условным конструкциям) информации. Например (набросал за минуту, палками не бить):

    Не только финансовая система может держаться на Excel Microsoft Excel, Программирование, Офис, Оптимизация, Visual Basic, Макрос, Microsoft Word, Microsoft office, Длиннопост

    Немного возни и у нас есть пользовательская форма со списком сотрудников и полями, которые надо заполнить, на выходе по нажатию кнопки мы получаем готовую вордовскую справку. Для этого нужен лист с данными сотрудников, лист список справок и шаблон MS Word. Готово, вы бог офисной оптимизации. И так можно многое: отчёты, справки, товарные чеки, письма, документы разные, приказы целые, любые действия с информацией.

    Сразу предупрежу всех, кто уже нацелился писать «на кой хрен ты раскопал этот старый кусок говна на заре 30го десятилетия 21го века». Пост чисто информативный, это не гайд, не самоучитель, может кому интересно, на прорыв в IT сфере ни разу не претендует, это раз, есть в нашей стране места, где развитие этой сферы отстаёт как раз на эти 20 лет, это два, ну и просто, может кому понадобится, может кто-то захочет на работе чему-то подучиться.
    Какие минусы? Оптимизация всё равно сосёт бибу (но не такую, как формулы), безопасность тоже, чисто теоретически можно использовать криптографическое шифрование БД и расшифрование в ходе работы, но я не проверял, можно ли легко вскрыть защиту самого VBA проекта, да и оптимизация пососёт ещё большую бибу (да и вообще, кому это надо, ребят, это же Excel), ну а стандартную Excel защиту листов можно вскрыть обычным архивом и блокнотом. Также, недостатком я считаю ряд ограничений среды, по типу того, что без API не работает прокрутка колёсиком мыши, стабильность — excel иногда любит чудить. Совместимость — отдельные танцы с бубном для x64 и x32 (но это если используете сторонние API, модули). Ну и объяснять людям, как разрешить запуск макросов :D.
    Спасибо, если дочитал этот длинный (и наверное скучный) пост до конца, если вдруг кому стало интересно могу написать ещё много чего, например, как написать сапёр на Excel, как сделать различные простенькие, но очень нужные офисные программки, как научиться этому (но.. зачем?), как использовать макрорекордер и много чего ещё, связанного с Excel. А ведь это всё ещё цветочки, есть люди, которые целые стратегические пошаговые игры в ячейках писали на том же VBA.

    Как повысить быстродействие вашей программы

    Данный текст будет посвящён в большей степени тем, кто только делает свои первые шаги в программировании и о производительности совершенно не задумывается. А между тем, практически все основные шаги по увеличению скорости выполнения вашей программы непосредственно связаны с компьютерной грамотностью и пониманием происходящих процессов. Итак, оставим общие фразы и перейдём непосредственно к сути.

    Не навреди

    На скорость выполнения вашей программы влияет 2 непосредственных фактора:

    • Скорость исполнения кода
    • Объём выделяемой памяти

    Как вы понимаете, минимизировать одновременно влияние обоих этих факторов невозможно: заигрывания с памятью неизбежно приводят к раздуванию кода, а «малобуквенный» текст к повышенному потреблению ресурсов исполняемой машиной. Поэтому главным правилом оптимизации является исключение излишеств в вашей программе. Это означает никакого лишнего кода и строго ограниченное использование памяти. На словах это легко, а на деле?

    Операции по оптимизации

    Если задача оптимизации встала перед вами уже после написания кода, то наиболее разумным решением будет предварительная очистка и разбиение на части с последующим изучением времени выполнения отдельных блоков. Очистка предполагает удаление неиспользуемых участков, переменных, избыточных заходов циклов.

    Анализ скорости выполнения после разбиения чистого кода даст вам объективную оценку того, в какую сторону направить свои усилия по оптимизации. Логично, что если одна операция выполняется 40% времени, а другая – 2%, то и разработчик должен куда больше усилий приложить к уменьшению производственных потерь в первом случае.

    Так как мы предполагаем, что код уже чистый, то необходимо в первую очередь рассмотреть выполнение следующих правил:

    1. Минимизировано количество используемых переменных. Например, ваша программа изобилует различными циклами. По правилам красивого кода, вы можете создать для каждого цикла свой уникальный счётчик, но с точки зрения оптимизации – это трата драгоценных ресурсов. Если в одной части программы переменная “отработала”, то её вполне можно применить в другой.
    2. Правильно выбраны типы данных. Как известно, каждый тип данных имеет свой используемый диапазон, то есть собственно тот размер памяти, который резервируется под его использование. Например, создавая код в Java и имея переменную, способную принимать только два значения (например, «on» и «off»), лучше использовать boolean с созданием последующего соответствия, но никак не char.
    3. Минимизировано количество присваиваний. Опять-таки, руководствуясь принципами красоты кода, вы можете разбить длинное арифметическое выражение на несколько более мелких. Это чревато появлением избыточных переменных и лишними операциями присваивания, что позитивно на быстродействии точно не скажется.
    4. Переменные инициируются при объявлении. Это правило хорошего тона в программировании не только повысит производительность, исключая лишние операции, но и избавит от невынужденных ошибок.
    5. Однотипные повторяющиеся операции объединены в процедуру или функцию. Еще один приём из основ программирования, который, тем не менее, часто игнорируется новичками.
    6. Однотипные циклы объединены. Допустим, у вас есть несколько массивов одинаковой размерности, которые надо заполнить в цикле. Вы можете создать несколько циклов и повысить читабельность или запихнуть все операции в общий цикл и повысить быстродействие. Решать вам.
    7. Использованная память немедленно очищается. Безусловно, не стоит удалять каждую переменную сразу после окончания её использования, но когда речь идет о работе с существенным объемом памяти (например, с большими массивами), контролировать потребление ресурсов просто необходимо.

    Когда оптимизация не имеет смысла

    Безусловно, подобные приемы не являются универсальными, а в случае с рядом языков и компиляторов (как в случае Dart в JavaScript с помощью dart2js), вы и вовсе получите настолько оптимизированный код, что собственными руками вряд ли создадите что-то лучше.

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

    "Проходной балл" Как ускорить работу кода и устранить недоработку?

    Помогите разобраться где может быть недоработка и каким образом можно ускорить работу кода?

    задание

    test

    Harry's user avatar

    Из того что я вижу в этом коде:

      (WA) при вычислении среднего от 50: 10^9 10^9 . 10^9 вы получите целочисленное переполнение, рекомендую использовать тип long long (у вас может и 64 бита но не факт что там так же).

    (TL) работа с cin/cout оочень медленная. Есть разные способы исправить это, можете читать через scanf/printf, можно использовать магические строки

    (WA/UB) размер строки 20 символов, но не 21 (а нуль символ?)

    Отвыкайте использовать динамическую память на олимпиадах без реальной необходимости, лучше задать массив сразу размера 10.000 и всё. Больше не меньше.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *