Как инженер-программист, я имел возможность увидеть множество программных и аппаратных технологий, внедренных за эти годы. Помимо написания кода, я также работаю преподавателем, преподаю основы информатики другим разработчикам iOS. Когда я только начинал, язык программирования Java был только что выпущен, а возможности Интернета реализовывались с запуском Mosaic и Netscape. Это был золотой век платформы x86, когда продавалось бесчисленное количество ПК с процессорами 386, 486 и Pentium.
Перенесемся в сегодняшний день, и большая часть видимых инноваций относится к мобильным устройствам. Хотя нас поразил оригинальный форм-фактор iPhone (а позже и iPad), то, что сегодня делается на этих устройствах, поистине удивительно. Помимо фотографий, любое устройство семейства iPhone или iPad (например, Air, Pro и т. Д.) Может легко поддерживать создание документов, игры, редактирование видео, создание видео и многое другое. Как и ожидали многие фанаты и отраслевые эксперты, большинство мобильных устройств теперь могут соответствовать или превосходить производительность своих настольных аналогов.
Измерение производительности программного обеспечения
Разработчики программного обеспечения пишут код и создают вещи. Создавая что-то новое или даже делая дополнительные улучшения, мы часто сталкиваемся с тем, как лучше всего написать функцию или последовательность. В основном решения выбираются на основе времени, которое потребуется для выполнения алгоритма, или объема памяти, который будет занимать решение. Эта производительность измеряется с использованием стандарта, называемого Big-O Notation.
Обучая Основы нотации Big-O, я часто подчеркиваю, что нельзя улучшить производительность алгоритма за счет увеличения аппаратного обеспечения. Например, если типичный поиск Google выполняется за O (n) - линейное время, любое увеличение скорости вычислений или возможностей будет просто прикрывать проект, требующий полного пересмотра. Например:
extension Array where Element: Comparable { //brute force approach.. func linearSearch(for evalue: Element) -> Bool { //check all possible values for number in self { if number == evalue { return true } } return false } }
Хотя концепция алгоритма O (n) может принимать разные формы, самый простой для понимания - это базовый цикл for. Что интересно, в этом коде нет ничего технически неправильного. Он отлично работает и во многих случаях может предоставить оптимальное решение, особенно если мы пытаемся оптимизировать сложную систему или рекурсивный алгоритм. Однако, учитывая ожидаемый результат функции (например, поиск), есть много методов, которые мы могли бы применить для улучшения дизайна. Что касается компьютерного оборудования, эта связь между производительностью, дизайном и оптимизацией также была в центре внимания чипа Apple M1.
Новый взгляд на производительность
Результаты уже получены, и эксперты по всему миру потрясены M1. Настолько, что многие видят в этом революцию в вычислительной технике. Однако вопрос производительности состоит из двух частей. Представила ли Apple какие-то новые революционные технологии или они раскрыли потенциал существующих технологий при правильной оптимизации?
Несмотря на то, что я повозился с несколькими ПК на протяжении многих лет, я бы определенно не считал себя экспертом по аппаратному обеспечению. Однако ясно, что Apple M1 - это результат небольших шагов по сравнению с одним монументальным изменением. Заметные улучшения в сроке службы батареи, производительности и низком энергопотреблении - вот вопросы, над которыми Apple работает уже более десяти лет, уделяя особое внимание мобильным устройствам. В отличие от настольных устройств, идея добавления охлаждающего вентилятора или расширяемой оперативной памяти (оперативной памяти) на iDevice кажется нелепой - в основном потому, что увеличение объема сделает устройство бессмысленным. Расширяя эти извлеченные уроки, может показаться, что лучший способ оптимизации компьютера - это централизовать его основные компоненты (на центральном процессоре), а не распределять его обязанности на другие области.
Редизайн рабочего стола?
Может ли надежная платформа x86, которую многие из нас использовали годами, быть несовершенной? Хотя дефектный может быть слишком резким, чтобы его описать, термин нуждающийся в нарушении может быть более применимым. На протяжении десятилетий отличительной чертой владения компьютерами было обеспечение возможности расширения системы до 32, 64 или даже 128 ГБ ОЗУ. Хотя обновляемая пользователем оперативная память была приятной функцией, это может сигнализировать о том, что компьютер не так оптимизирован, как мог бы - черт возьми.
Доказательство можно увидеть в результатах. По иронии судьбы, мой новый iPad Air 2020 года имеет лучшую производительность процессора в моей семье, опережая iMac, MacBook Pro, а также MacBook Air (2010 г.). Похоже, хорошее время для обновления.
Получите бесплатный рабочий лист собеседования на iOS
Вам нужно подготовиться к следующему техническому собеседованию? Мы предлагаем бесплатную 5-страничную загрузку советов и рекомендаций, которые помогут вам добиться успеха. Когда вы зарегистрируетесь, используя эту ссылку, мы отправим вам рабочий лист в формате PDF.