>>Дело в том, что чаще всего видеокарта не может растянуть разрешение игры (например 1920х1080 пикселей) на экраны с более высокими экзотическими разрешениями, поэтому игра будет запускаться при разрешении 1920х1080, но в масштабе 1:1, либо в родном, максимальном разрешении экрана, игнорируя все остальные настройки.
Допустим, что нам нужно написать программу, которая должна обработать 100 записей и уложиться в 2 секунды. В ходе разработки мы придумали некий алгоритм, временная сложность которого O(n^2).
В таком случае у нас есть 2/100^2=2*10^-4 секунд (0,2 миллисекунд или 200 микросекунд) в среднем для обработки каждой записи
а должно быть так
В таком случае у вас есть 2/100=20 миллисекунд в среднем для обработки каждой записи
Если у вас массив в 100 элементов и у вас O(n^2), то это не значит что вы должны обработать и учитывать время на 10.000 элементов. Это значит при изменении количества элементов (которых изначально было *100*) время будет ограничиваться сверху как квадрат отношения количества изначальных элементов.
Станет не 100, а 300 элементов. Алгоритм может начать укладываться в 18 секунд (2*(300\100)^2)
Все просто же )
Сложность нужна для того что могли оценить «так, вот на таком количестве скорость ок, но в определенный момент» скорость резко упадет.
Для примера напишите программу на c# которая будет к строке добавлять тысяч 50.000 слов.
что-то вроде
string s = "init string";
for (int i = 0; i < 50000; i++)
{
s = s + i.ToString();
}
Этот пример «плохой». Но показывает сложность конкатенации иммутабельных строк и необходимость StringBuilder-а
Т.е. при количестве добавляемых чисел, например, до 100 все будет ок. Но в определенный момент скорочть резко упадет. Из-за аллокации памяти под новую строку и копирование данных туда-сюда.
У нас не противоречие в утверждения противоречие. У вас ошибка.
Сложность n^2, 2 секунды и 100 элементов дает нам только время на обработку «20 мсек». Причем тут 0,2 мсек.
Даже если сложность n!, все равно при «2 секунды и 100 элементов» у вас «20 мсек» на запись.
Допустим, что нам нужно написать программу, которая должна обработать 100 записей и уложиться в 2 секунды. В ходе разработки мы придумали некий алгоритм, временная сложность которого O(n^2).
У вас дальше неправильно, правильно примерно так:
У вас есть 2 сек\100 записей = 2000/100 = 20 мсек в среднем на обработку одной записи.
Но если количество записей для обработки увеличится в 2 раза, то время на обработку увеличится в 4 раза.
Количество записей увеличится в 10 — время в 100 раз.
Сложность говорит о росте времени работы алгоритмов при росте количества элементов, но ничего не говорит про время обработки.
Если один элемент обрабатывается за 10 секунд — это ничего не значит.
Но:
Если один элемент обрабатывается за 10 секунд, и 20 элементов за 10 секунд, то это O(1)
Если один элемент обрабатывается за 10 секунд, а 20 элементов за 200 секунд, то это O(n)
Если один элемент обрабатывается за 10 секунд, а 20 элементов за 4000 секунд, то это O(n^2)
Ну тут хоть объяснили как добавить логгер. Мне надо было добавить два разных логгера в программе, методом «тыка» полчаса разбирался :)
В обычных статьях «Вот смотрите пишем в лог» и код типа
private static ILog log = LogManager.GetLogger(«LogManager»);
Думаешь «Агааа. Значит надо имя типа». А тут объяснили что имя логгера нужно указать.
Когда поймешь различия в логерах и аппендерах все понятно, а поначалу не все так явно.
С вероятность 146% у новостей про Delphi будет комментарий «А ей еще пользуются?\А она жива?»
Сам начинал и программировал 5 лет на ней, потом на C# перешел.
Когда D массово использовали — у людей был негатив от кода начинающих, из-за низкого порога вхождения. Например вся логика в в OnClick\GodClass-ы.
А теперь C# очень распространен и на нем такого полно.
Очередное подтверждение что не в инструменте проблемы, а в руках.
Сам тор может быть закрытым — то есть представлять собой закольцованную трубу, так и открытым, в виде закольцованного жёлоба. Во втором случае атмосфера удерживается внутри станции за счёт центробежной силы.
Вот после этого тоже подумал что «Аха, опять дизайнеры нафантазировали»
От хвата зависит.
Я сидел на Logitech Revolution MX, когда от возраста скончалась — попробовал Bloody. В результате v5 на работу унес, а домой взял Logitech MX Master
r8 подарил брату
>>Дело в том, что чаще всего видеокарта не может растянуть разрешение игры (например 1920х1080 пикселей) на экраны с более высокими экзотическими разрешениями, поэтому игра будет запускаться при разрешении 1920х1080, но в масштабе 1:1, либо в родном, максимальном разрешении экрана, игнорируя все остальные настройки.
Допустим, что нам нужно написать программу, которая должна обработать 100 записей и уложиться в 2 секунды. В ходе разработки мы придумали некий алгоритм, временная сложность которого O(n^2).
В таком случае у нас есть 2/100^2=2*10^-4 секунд (0,2 миллисекунд или 200 микросекунд) в среднем для обработки каждой записи
а должно быть так
В таком случае у вас есть 2/100=20 миллисекунд в среднем для обработки каждой записи
Если у вас массив в 100 элементов и у вас O(n^2), то это не значит что вы должны обработать и учитывать время на 10.000 элементов. Это значит при изменении количества элементов (которых изначально было *100*) время будет ограничиваться сверху как квадрат отношения количества изначальных элементов.
Станет не 100, а 300 элементов. Алгоритм может начать укладываться в 18 секунд (2*(300\100)^2)
Все просто же )
Сложность нужна для того что могли оценить «так, вот на таком количестве скорость ок, но в определенный момент» скорость резко упадет.
Для примера напишите программу на c# которая будет к строке добавлять тысяч 50.000 слов.
что-то вроде
Этот пример «плохой». Но показывает сложность конкатенации иммутабельных строк и необходимость StringBuilder-а
Т.е. при количестве добавляемых чисел, например, до 100 все будет ок. Но в определенный момент скорочть резко упадет. Из-за аллокации памяти под новую строку и копирование данных туда-сюда.
посмотрите
https://habrahabr.ru/post/195996/
https://habrahabr.ru/post/104219/
https://habrahabr.ru/post/188010/
Внутренний цикл имеет отношение к сложности, а не к количеству элементов.
Почитайте про сложность, и не додумывайте в стиле «я так думаю\мне кажется».
Вы к сложности алгоритма притягиваете еще какие-то дополнительные обходы.
Лучше перестану отвечать, у меня будет «бомбить и пригорать».
А вы останетесь при своем мнении.
Сложность n^2, 2 секунды и 100 элементов дает нам только время на обработку «20 мсек». Причем тут 0,2 мсек.
Даже если сложность n!, все равно при «2 секунды и 100 элементов» у вас «20 мсек» на запись.
Допустим, что нам нужно написать программу, которая должна обработать 100 записей и уложиться в 2 секунды. В ходе разработки мы придумали некий алгоритм, временная сложность которого O(n^2).
У вас дальше неправильно, правильно примерно так:
У вас есть 2 сек\100 записей = 2000/100 = 20 мсек в среднем на обработку одной записи.
Но если количество записей для обработки увеличится в 2 раза, то время на обработку увеличится в 4 раза.
Количество записей увеличится в 10 — время в 100 раз.
Сложность говорит о росте времени работы алгоритмов при росте количества элементов, но ничего не говорит про время обработки.
Если один элемент обрабатывается за 10 секунд — это ничего не значит.
Но:
Если один элемент обрабатывается за 10 секунд, и 20 элементов за 10 секунд, то это O(1)
Если один элемент обрабатывается за 10 секунд, а 20 элементов за 200 секунд, то это O(n)
Если один элемент обрабатывается за 10 секунд, а 20 элементов за 4000 секунд, то это O(n^2)
begin tran
…
rollback
Потом внутри вставляем
1. Отбор записей по условию
2. Апдейт
3. Отбор записей по условию (обновленных)
Если все ок, то апдейт с коммитом
Ну а у Оракла понравилось то, что он по умолчанию транзакции не коммитит. Сначала удивился конечно
Если все правильно помню.
Может заменять cmd (в настройках галочка ставится).
http://stackoverflow.com/questions/32886613/logger-for-windows-10-uwp-app
В обычных статьях «Вот смотрите пишем в лог» и код типа
private static ILog log = LogManager.GetLogger(«LogManager»);
Думаешь «Агааа. Значит надо имя типа». А тут объяснили что имя логгера нужно указать.
Когда поймешь различия в логерах и аппендерах все понятно, а поначалу не все так явно.
p.s. Не, документацию не читал в тот момент.
Сам начинал и программировал 5 лет на ней, потом на C# перешел.
Когда D массово использовали — у людей был негатив от кода начинающих, из-за низкого порога вхождения. Например вся логика в в OnClick\GodClass-ы.
А теперь C# очень распространен и на нем такого полно.
Очередное подтверждение что не в инструменте проблемы, а в руках.
p.s. Да, дочитал что компилируется через lazarus
Вот после этого тоже подумал что «Аха, опять дизайнеры нафантазировали»
Я сидел на Logitech Revolution MX, когда от возраста скончалась — попробовал Bloody. В результате v5 на работу унес, а домой взял Logitech MX Master
r8 подарил брату
Например мне?
v5 — очень ок
a9 — средне
r8 — вообще неудобно
Так-что пробовать надо.