Быстро ли считает компьютер
Время для компьютеров течет не так, как для людей. То, что человеческим мозгом воспринимается как мгновение, для компьютеров растягивается на долгие эпохи. Данная статья — это метафора, в попытке осознать этот простой и в общем-то очевидный факт.
2 вариант
1. Какая наука изучает способы передачи хранения и обработки информации?
1) математика
2) информатика
3) логика
2. Чем не пользовался бухгалтер, когда компьютеров не было?
1) счётами
2) калькулятором
3) журналом бухгалтера
4) нотной тетрадью
3. Где можно обойтись без компьютера?
1) на заводе
2) в больнице
3) в поле
4) в школе
4. Какую работу выполняет компьютер в банке?
1) хранит в памяти данные обо всех клиентах банка
2) считает, сколько денег у каждого клиента в банке
3) оба утверждения верны
4) ничего из вышеперечисленного не верно
5. Что компьютер умеет делать лучше человека? Выберите неверное утверждение.
1) считает быстрее
2) больше и дольше помнит
3) может работать без «питания»
4) долго работает и не устаёт
6. Выберите верное утверждение.
Человек «главнее» компьютера, потому что
1) человек не ошибается
2) человек помнит больше информации
3) человек пишет программы для компьютера
4) человек не устаёт
7. Чем помогает компьютер человеку?
1) быстрее считает
2) хранит информацию
3) быстро находит информацию
4) все ответы верные
8. Как называется информация, которая попадает в компьютер?
1) банк данных
2) печатный документ
3) текст
4) данные
9. Быстро ли считает компьютер?
1) медленнее, чем человек
2) да, очень быстро
3) в 3 раза быстрее, чем человек
10. Если компьютер считает не так, как надо, то почему?
1) компьютер так «решил»
2) человек сделал ошибку в программе
3) это никому не известно
4) такого не бывает
Отличный вопрос! Нам даже не понадобится специальных знаний, чтобы перевести его с "человеческого" на "компьютерный" и довольно точно предсказать результат. Давайте разберемся.
"Человеческое" решение
"Компьютер" в переводе с английского означает "вычислитель", то есть для того, чтобы ответить на вопрос "За какое время мы сосчитаем до миллиона?" необходимо сначала перевести эту задачу на язык вычислений, то есть предельно ясно ответить на вопрос "Каким образом мы считаем до миллиона?" Компьютер действует немного не так, как люди. Скажем, если попросить человека досчитать до миллиона, то скорее всего он поймет задачу так:
Назовем последовательно все числа от одного до миллиона. Когда я скажу миллон, счет окончен.
Решение "Человек с калькулятором"
Компьютер — это не человек, а скорее "калькулятор на максималках". Если бы меня попросили посчитать до миллиона на калькуляторе, то я бы сделал так:
- Нажал кнопку "1",
- Нажал кнопку "+"
- Нажал кнопку "1"
- Нажал кнопку "=" -> на дисплее отобразилось "2"
- Нажал кнопку "=" -> калькулятор в этом случае к текущему значению "2" применяет опять операцию "+1" -> на дисплее отобразилось "3"
- (Да, вы угадали) Нажал кнопку "=" -> на дисплее отобразилось "4"
- .
И нажав оставшиеся 999996 раз я наконец увидел "1000000" на дисплее и сказал: "Я досчитал".
"Компьютерное" решение
"Человек с калькулятором" это уже почти "процессор"🤖. В этом решении человек нам нужен только для того, чтобы нажимать на кнопки и смотреть на экран, чтобы быть в курсе, досчитали ли мы до миллиона или ещё нет. Если же мы хотим "человека" из счёта исключить, то нам на помощь придёт специальная команда, которую не найдешь на калькуляторе, зато есть у каждого современного процессора: сравнить два числа. А ещё у процессоров, в отличие от калькуляторов, нет экрана, зато есть регистр — кусочек памяти внутри процессора, где может лежать ровно одно число, то самое число, которое мы видим на экране калькулятора, когда он считает.
Таким образом, если мы хотим сосчитать до миллиона прибавляя по единице каждый раз, набор команд для процессора (или программа) будет выглядеть так:
- Положить в регистр число 1
- Добавить к регистру единицу
- В регистре миллион?
- Если нет, вернуться к шагу 2
- Если да, то счет закончен
Процессор сам по себе без интеллекта и исполняет команды в порядке очереди и прыгает вперёд или назад по списку команд, если его об этом просят. Для того, чтобы посчитать до миллиона процессору согласно такой программе придётся "покрутиться" в буквальном смысле: прыжок с команды №4 на №2 придется повторить 999999 раз прежде чем процессор дойдёт до команды №5 и скажет нам "Я посчитал!".
Кстати, всего в данной реализации задачи процессору нужно будет выполнить чуть более трех миллионов команд, прежде чем мы закончим.
Так сколько времени нужно, чтобы посчитать до миллиона?
Мы смогли разложить задачу на простейшие операции — команды, которые понимает процессор без дополнительного переводчика с "человеческого" на "процессорный". Ответить на вопрос, сколько времени займёт такая задача у процессора теперь будет довольно просто.
Хорошим приближением к скорости исполнения команд считаться такое: одна команда в процессоре выполняется за один "герц". Типичный процессор ноутбука или настольного компьютера сейчас работает в диапазоне 2-5 гигагерц, то есть 2-5 миллиардов команд в секунду — так примерно можно переводить с технического сленга слово "гигагерц". Давайте для ровного счёта остановимся на трёх гигагерцах — трёх миллиардах команд в секунду. Мы прикинули раньше, что нам нужно исполнить 3 млн. команд, так что при возможности исполнить 3 млрд. в секунду нам потребуется подождать всего одну тысячную долю секунды, чтобы дождаться ответа от компьютера "Я посчитал!".
Но можно ли быстрее?
Конечно, можно и быстрее. Если перевернуть счёт с ног на голову и считать с миллиона до нуля, то можно соединить вместе инструкции №3 и №4, потому что в большинстве компьютеров есть специальная инструкция "сравнить с нулём и прыгнуть, если результат ноль (не ноль)". Такая программа будет выглядеть так:
- Положить в регистр число 1000000
- Уменьшить регистр на единицу
- Если в регистре не ноль, вернуться к шагу 2
- Счёт закончен
Выкинув одну операцию мы уменьшили число инструкций с примерно трёх миллионов операций, до двух миллионов. А значит такая программа закончит работу через 0,000666 секунд, а не через 0,001 секунду. Но к сожалению и понять такую программу будет несколько труднее, чем первую — обычная ситуация при оптимизации программ (так называют усилия, чтобы сделать программу как можно быстрее или компактнее).
А ещё быстрее?
Ещё быстрее — вряд ли. Если конечно не сделать специализированный процессор, который умеет быстро делать ровно одну вещь — считать до миллиона. Такой процессор, думаю, способен уложиться даже за миллионные доли секунды, только вот в Fortnite на нём поиграть не получится, да и зайти на Яндекс.Кью тоже.
Вместо выводов
Компьютеры и в правду очень быстрые. Настолько быстрые, что инженеры сетуют, что сигналы внутри процессоров распространяются "всего лишь" со скоростью света (а быстрее света вообще ничего нет). Однако человечество уже почти исчерпало все возможности, чтобы сделать компьютеры быстрее. Поэтому самый трудный вопрос на сегодняшний день это как быстрее всего посчитать ту или иную задачу; как бы взять и сэкономить в программе пару команд или избежать долгих путешествий в "память" за необходимыми для расчётов данными.
Всё дело в том, что мозг в отличие от компьютера не предназначен для вычислений. Например, странно было бы сравнивать скороварку и аппарт для электросварки. Нам ведь вполне очевидно, почему аппарат для элекстросварки, например, не готовит гурьевскую кашу на пару, хотя очень хорошо нагревает.
Так и здесь: скорость прохождения сигналов не является показателем скорости решения арифметических задач.
Чтобы получить сумму 5254 и 3214 с помощью электронного устройства мы помещаем 5254 в один регистр, 3214 — в другой, а на выходе получаем 8468 буквально через промежуток времени, достаточный для насыщения полупроводниковых переходов в каскаде транзисторов.
В мозгу таких регистров нет в принципе. Чтобы решить такую задачу в уме, нам нужно для начала запомнить два этих числа. Только на удержание их в памяти нам нужны каскады импульсов идущих через огромное количество нейронов. Чтобы не забыть эти числа на протяжении пары минут, мы можем попробовать запомнить их, например, как возраст родителей (52 и 54) и как последние цифры номера телефона подружки (3214). Или применить какие-то другие способы запоминания. Представить себе изображения этих цифр (не все это могут). И это только удержание в памяти.
Дальше начинаются вычисления. Можно действовать как в начальной школе: единицы, десятки… Все эти правила надо вспомнить. Попутно мы вспомним нашу первую учительницу, испытаем какие-то эмоции, обнаружим, что оба числа внезапно заканчиваются на одинаковые цифры…
Если мы владеем приёмами сокращённых вычислений, то сделаем всё это немного быстрее.
Если мы владеем, например, приёмами ментальной арифметики, то сосчитаем результат ещё быстрее, потому что будем считать на воображаемый счётах.
Также мы сможем придумать еще десятки способов вычисления как более быстрых, чем школьные, так и менее быстрых чем они же. Да, мы можем сделать и это, если только зададимся целью.
Кроме того, мы можем вообще ничего не считать. :)
А тем временем, несколько десятков транзисторов могут только суммировать и не могут ничего другого. В этом их сила, и в этом их слабость.
Вечер добрый!
Не знала в какой теме задать вопрос, но как по мне это больше сюда подходит =)
Ну или дорогие модераторы, перенесите куда нужно - спасибо!
____
И так вопрос: С какой же скоростью может считать процессор компьютера. Ну, не знаю как там считается это дело, гигагерцы на что умножаются или что. В общем возьмём средний процессор. Ну или Ваши примеры.
___
Так вот, до скольки может посчитать компьютр от 0 до N, за разумное время - допустим до скольки он посчитает за 1 час человеческого времени?
Как это измерять?
Какие есть алгоритмы, фокусы, таблицы, матрицы, хитрости для ускорения этого процесса на том же CPU?
Спасибо за примеры подсчетов и объяснения на пальцах!
Как быстро считать текстовый файл?
С помощью FSO методами ReadAll,ReadLine файл считывается, но если он большой, то очень долго.
Как максимально быстро считать очень большой текст из файла
как максимально быстро считать ооочень большой текст из файла и поеместить в richTextBox1?
Как считать файл с текстом в одну переменную типа string максимально быстро?
Как считать файл с текстом в одну переменную типа string максимально быстро? Текст.
Быстро считать в матрицу
Здравствуйте, форумчане. Я новичок в матлабе. Хотелось бы узнать, как быстро считывать из файла.
Быстро считать любой файл целиком
Как полностью считать любой файл и главное быстро ?
Возможно ли считать 2000 пикселей с экрана, очень быстро?
Возникла задача, сделать программу для перевода текста из картинки, но столкнулся с проблемой, что.
Может ли Эксель быстро решать такие задачи?
Здравствуйте! Условия. Три велосипедиста должны проехать из пункта А в пункт В и обратно.
Как можно проверить, может ли компьютер использоваться в качестве маршрутизатора
Как можно проверить, может ли компьютер использоваться в качестве маршрутизатора (какая командная.
Компьютерный год
Предлагаю перескочить через сутки и месяцы и сразу перейти к годам (~12мс), за год может произойти очень много разных событий:
Запрос, обрабатываемый базой данных несколько месяцев, можно считать быстрым.
Примерно раз в компьютерный год должно меняться изображение на мониторе, чтобы соответствовать частоте 60 Hz.
Около трех лет уходит на выполнение пинга 8.8.8.8 (три года, Карл! человек за это время может пешком дойти до сервера и вернуться!)
Десяток лет может пройти от нажатия на клавиатуру до появления символа на экране монитора.
Компьютерное столетие
Именно на таком уровне (человеческие секунды) мы общаемся с компьютером. Например, главная страница Хабра будет загружаться около пяти столетий. Вдумайтесь! Полтысячи лет! Если во времена Шекспира начать, секунда за секундой, работать над загрузкой страницы, работа всё ещё может быть не закончена в XXI веке!
Надеюсь, что данный мысленный эксперимент вам показался настолько же захватывающим и невероятным, как и мне. Многие вещи становятся более понятными и осязаемыми, если перевести их в компьютерные секунды. Например, читая "Операционные системы" Танненбаума, я недоумевал, как компьютер может вообще успевать что-то делать, если переключение в/из ядра ОС — такая сложная операция? Но если перевести это в "компьютерное" время, то это всего-то час труда раз в пару месяцев.
Тест по информатике Что умеет компьютер для 5 класса с ответами. Тест включает в себя 2 варианта, в каждом варианте 10 заданий с выбором ответа.
Инфляция временных единиц
Для большинства программистов прикладного уровня время, которым измеряется производительность программ, останавливается на масштабе миллисекунд: ну какая разница, будет ли элемент в браузере рендериться 50 или 200 микросекунд, если это всё равно ничтожно малое значение? Какая разница, выполняется ли запрос в базу данных за 200 или за 500 микросекунд, если сетевые издержки на порядок больше? Безусловно, есть области программирования, где приходится спуститься на уровень наносекунд и единичных тактов, но в большей своей части программисты не думают такими временными понятиями. Я предлагаю подумать.
Компьютерный час
На этом этапе мы переходим от человеческих наносекунд к микросекундам: компьютерный час равен 1.44 мкс.
Может выполниться пузырьковая сортировка небольшого массива, когда-то написанная мной в образовательных целях. (вдумайтесь: если процессор каждую секунду делает по простому действию, то для сортировки маленького массива ему понадобятся часы!)
За десяток-другой часов процессор может запросить и получить данные у достаточно производительного SSD.
1 вариант
1. Выберите правильное утверждение.
Информатика — это наука
1) об изучении возможных способов передачи, хранения и обработки информации
2) о вычислениях
3) об устройстве компьютера
4) о создании документов, презентаций, компьютерных игр
2. Где можно обойтись без компьютера?
1) в банке
2) в школе
3) в огороде
4) в больнице
3. Что было вместо электронного журнала в школе, когда компьютеров не было?
1) учебники
2) табель успеваемости
3) журнал у директора школы
4) дневник у каждого ученика и журнал у каждого учителя
4. Какую работу выполняет компьютер в бухгалтерии завода?
1) учитывает расходы
2) учитывает доходы
3) учитывает доходы и расходы
4) ничего из вышеперечисленного
5. Чем компьютер «лучше» человека?
1) компьютер не болеет
2) компьютер считает быстрее
3) компьютер не спит
4) все утверждения верны
6. Выберите неверное утверждение.
Человек «главнее» компьютера, потому что
1) человек готовит данные для компьютера
2) человек помнит больше информации
3) человек пишет программы для компьютера
4) человек может выключить компьютер
7. Информация, которую компьютер обрабатывает, называется
1) базой
2) текстом
3) данными
4) формулами
8. Что в компьютере обрабатывает информацию?
1) программы
2) механизмы
9. Много ли информации успевает обработать компьютер за 1 секунду?
1) да, очень много
2) в 2 раза больше, чем человек
3) меньше, чем человек
10. Имеет ли компьютер образное мышление?
Инфляция временных единиц
Для большинства программистов прикладного уровня время, которым измеряется производительность программ, останавливается на масштабе миллисекунд: ну какая разница, будет ли элемент в браузере рендериться 50 или 200 микросекунд, если это всё равно ничтожно малое значение? Какая разница, выполняется ли запрос в базу данных за 200 или за 500 микросекунд, если сетевые издержки на порядок больше? Безусловно, есть области программирования, где приходится спуститься на уровень наносекунд и единичных тактов, но в большей своей части программисты не думают такими временными понятиями. Я предлагаю подумать.
Компьютерная минута
Этот промежуток времени интереснее. За минуту может произойти многое. По человеческим меркам эта минута равна примерно 24 наносекундам.
Что же может произойти за компьютерную минуту?
Электрический сигнал пройдет всю длину кабеля от компьютера до монитора.
За две минуты произойдет обращение к данным в оперативной памяти.
За несколько минут JVM сможет сделать объект String из маленького массива байтов.
Компьютерная секунда
Я предлагаю подумать, как выглядела бы работа современного компьютера, если бы каждому такту процессора соответствовала одна секунда в субъективном мироощущении каких-нибудь существ, которые, как мы знаем, и управляют всей техникой ("гарантийные человечки" или, на современный лад, "фиксики"). Для таких человечков частота процессора будет равно ровно 1 Hz.
Я пишу эту статью на ноутбуке с восьмиядерным процессором базовой частотой в 2.4 GHz, то есть один такт раз в ~0,4 наносекунды (округление очень грубое). Это значение и будет нашей "компьютерной секундой".
Что же происходит за время, равное такой секунде?
Восемь ядер процессора успевают выполнить несколько элементарных операций вроде сложения чисел.
Свет проходит около 12 сантиметров (в вакууме).
За пять секунд процессор может получить данные из кэша первого уровня.
Читайте также: