нет, если взять х небольшим, то должно работать быстрее.
Например, для x=5 Вы рассчитаете квадраты размерами 110, 108,… 102. Конечно,
это немного больше вычислений по сравнению с вычислениями и чтением данных из 5 квадратов 102*102, (процентов на ~20%), но нагрузка на оперативную память упадёт почти в 5 раз — а именно она и является бутылочным горлышком.
Если Вы упираетесь в скорость памяти — попробуйте разбить задачу на кусочки по-другому. Например, можно взять область (100+2x, 100+2x), и на её основе посчитать вперёд сразу на х шагов центральный кусочек размером 100*100. В идеале должно получаться, чтобы необходимая для "кусочка" память была не слишком большой и помещалась в кеш процессора — тогда у Вас на первом шаге будет чтение из ram и на следующих (х-1) шагах будет использоваться кеш.
А с чего бы источникам излучать одновременно? (Тем более понятие одновременности сильно зависит от системы отсчёта) Мы просто получаем только те сигналы, которые доходят до нас сейчас.
Видите «звон» (затухающие колебания) на обоих концах калибровочного импульса (помечено «Ringing indicates underdamping»)? Он показывает, что система недодемпфирована.
Кто-нибудь может объяснить, почему "звон" есть слева, до импульса? По графику получается, что при появлении калибровочного импульса система зачем-то качнулась в противоположную силе сторону, а только потом сдвинулась куда надо.
Вы не пробовали в конце анимации освещения от машины на контейнере добавить уходящий красноватый блик? От задних фар, по-идее передние только вперёд светят.
И ещё вопрос по мотоциклисту. Источник освещения за мотоциклом, но мне кажется, что при таком направлении освещения элементы под надписью police будут оставаться в тени. Вы добавили там блики "для красоты" или из каких-то других соображений?
Меня ещё удивило, что время работы от здоровенного аккумулятора всего лишь 9 часов. Насколько я помню, в телефонах серии nokia XpressMusic можно было музыку сутками слушать, они практически не разряжались, хотя тоже позиционировались для прослушивания музыки.
Может быть, это как-то связано с "усилителем".
Тоже ради интереса писал шашки на втором курсе — правда, подход был менее серьёзным. Как оказалось, алгоритм, который просчитывает вперёд на 3-4 хода, уже играет лучше меня. (4 моих и 4 хода программы, при съедении кого-нибудь глубина перебора конкретной ветки увеличивалась на 1).
написать утилиту, которая копирует эти файлы, не мешая их дешифровке, но подавляя при этом обратную шифровку?
Теоретически можно программой читать файлы (они загрузятся как расшифрованные), а потом отправлять содержимое куда-нибудь по сети, даже подавлять ничего не придётся. Но мне такой способ кажется костыльным, да и создатели криптолокеров вряд ли дадут вам возможность неограниченно расшифровывать файлы. (иначе можно будет спокойно пользоваться компьютером с криптолокером)
Кому-то хватает 4 гига на месяц, кому-то 15, кому-то 40 за глаза.
Так нет же адекватных тарифов с оплатой, пропорциональной трафику. Год назад выбирал тариф для эпизодического использования интернета на телефоне — почти у всех операторов либо конские цены (10р/мб), либо свинские ограничения (типа 20 мб/сутки с недешёвой доплатой за доп. трафик), либо псевдобезлимит на ~5гб за 400+ рублей.
Почему я не вижу тарифов "качайте сколько хочется по цене 10 копеек за мб"?
Сначала специально были созданы цены, которые вынуждали даже при небольшом использовании интернета переходить на безлимитные тарифы и платить за возможности, которые большинству не нужны. Потом люди, о ужас, начали использовать интернет на всю катушку, а денег с них больше получить не получается.
Цель данного поста не сравнить производительность Эльбрус и Core i7
Ага, и в каждом примере шаблонные строчки
Пример 1. В случае совсем простого цикла, который мы рассмотрели, Эльбрус-4С работает значительно эффективнее Core i7 с учетом отношения частот.
Пример 2. Кроме того, Эльбрус работает эффективнее Core i7 с учетом отношения частот.
Пример 3. Кроме того, заметно, что Эльбрус без интринсиков работает эффективнее Core i7 с учетом частоты, а вот с интринсиками времена работы практически совпадают.
Пример 4.Кроме того, 32-битная команда popcnt на Эльбрусе работает быстрее, чем на Core i7 с учетом отношения частот. А вот в 64-битной случае времена работы на Core i7 и Эльбрусе сравнялись.
Пример 5 Код с зависимостью по данным отработал на Эльбрусе медленнее, чем на Core i7 в пересчете на 1 ГГц, а вот без зависимости Эльбрус всего в 4 раза медленнее Core i7 (при различии частот в 5 раз).
Пример 6 Соотношение по скорости между Эльбрус и Core i7 оказалось равным примерно 2.6, в то время как отношение частот равно 5.
Кстати, тут неправда. Вы подменяете сравнение производительности процессоров сравнением мощности ядер, но у i7 8 виртуальных ядер и при большом количестве потоков он работает в 2.6*2 = 5.2 раз быстрее. (например, в параллельном варианте для n=32 у вас время больше 10 сек для Эльбруса и всего лишь 2 сек для i7)
рассмотренных элементарных примерах для оптимизации кода Эльбрус показал себя просто замечательно с учетом тактовой частоты в 800 МГц и в два раза меньшей потребляемой мощности по сравнению с Core i7
Вы всю статью хвалите Эльбрус и во все таблицы пихаете отнормированные на частоту числа, вы бы ещё на "подгоночный коэффициент" их домножали, оно быть хоть честнее было.
Если бы целью было сравнение эффектов от оптимизаций, можно было бы неоптимизированный вариант брать за эталон и с ним уже сравнивать: "вот, такие-то действия ускоряют программу в 9 раз на i7 и в 20 раз на Эльбрусе".
У них не только память разная, у них разные архитектуры. Было бы удивительно, если бы архитектура VLIW давала меньшую производительность на такт в задачах, которые явно хорошо параллелятся.
Логичнее сравнивать отношение производительности к потребляемой мощности, но Эльбрус проиграет.
Странно, что Вы это не использовали. Можно было бы использовать инты и для больших значений — просто забить на переполнение, а всё подошедшее проверять честным расчётом на uint128. Вероятность случайных совпадений очень мала, поэтому "честные" проверки не займут много времени.
Этой возможности иногда не хватает при чтении в транспорте.
Ещё к компенсации перемещений можно попробовать добавить вращения — они могут возникать, если, например, держать телефон одной рукой сбоку в ландшафтном режиме. Но возможно, появится куча некрасивых эффектов сглаживания из-за вертикальных и горизонтальных элементов интерфейса.
Странно, что нет упоминания вингсьюта (вики). "Перепонки" вполне похожи на его уменьшенную версию, можно было бы использовать параметры от реальных полётов.
Почему нельзя разработать приложение весом в 3 МБ вместо 300 МБ? Ответ: сама ОС такая.
Можно. На андроиде код занимает очень малую часть от приложения. Если повыкидывать из приложения звуки, кастомные кнопочки, сплеш-скрин и прочие красивости, оно будет весить очень мало. Только пользователи будут недовольны, потому что им красивостей хочется, а размер +- 10 мб не важен.
Например, когда я писал небольшую игру на libgdx+scala, apk файл весил 3мб.
Внутри лежит classes.dex на 1.7 мб (большая часть — scala library), ещё 4.6 мб занимают библиотечки от libgdx, всё это с остальными ресурсами ужимается в апк размером в 3мб. (единственный косяк — библиотечки лежат сразу для пяти платформ, "x86", "x86_64", "armeabi", "armeabi-v7a", "arm64-v8a")
Итог: приложение на Android/iOS занимает 150 МБ, а на Windows — 1 МБ, и то это округление в большую сторону от 150 КБ.
Вывод: 400 000 000+ юзеров на Windows 10 экономят трафика столько, сколько Android и не снилось!
Ага, попробуйте поставить Windows Visual Studio. Даже если отключить все опции, она займёт 5 гб на диске. Для сравнения, образ линукса занимает около одного гигабайта. А в линуксе уже установлены gcc и прочие штуки для разработки.
Бинарная несовместимость с объектными моделями других языков/платформ? а где вы видели бинарную совместимость C# и Java, к примеру?
java более-менее совместима со Scala/Kotlin/Groovy. Можно вызывать код, наследоваться от классов из другого языка и делать прочие вещи — потому что всё это компилируется в байткод. По той же причине код можно запускать на разных платформах.
Поддерживаю. Читатель нажмёт на кнопочку "сложно!", выразит свою позицию и не будет возмущаться, что статья по его мнению слишком сложная или слишком лёгкая.
Существует целая куча задач, которые проблематично вычислить без всякой np-полноты (Особенно если использовать "слишком большие данные"). Автор почему-то их не упомянул.
нет, если взять х небольшим, то должно работать быстрее.
Например, для x=5 Вы рассчитаете квадраты размерами 110, 108,… 102. Конечно,
это немного больше вычислений по сравнению с вычислениями и чтением данных из 5 квадратов 102*102, (процентов на ~20%), но нагрузка на оперативную память упадёт почти в 5 раз — а именно она и является бутылочным горлышком.
Если Вы упираетесь в скорость памяти — попробуйте разбить задачу на кусочки по-другому. Например, можно взять область (100+2x, 100+2x), и на её основе посчитать вперёд сразу на х шагов центральный кусочек размером 100*100. В идеале должно получаться, чтобы необходимая для "кусочка" память была не слишком большой и помещалась в кеш процессора — тогда у Вас на первом шаге будет чтение из ram и на следующих (х-1) шагах будет использоваться кеш.
А с чего бы источникам излучать одновременно? (Тем более понятие одновременности сильно зависит от системы отсчёта) Мы просто получаем только те сигналы, которые доходят до нас сейчас.
Кто-нибудь может объяснить, почему "звон" есть слева, до импульса? По графику получается, что при появлении калибровочного импульса система зачем-то качнулась в противоположную силе сторону, а только потом сдвинулась куда надо.
Вы не пробовали в конце анимации освещения от машины на контейнере добавить уходящий красноватый блик? От задних фар, по-идее передние только вперёд светят.
И ещё вопрос по мотоциклисту. Источник освещения за мотоциклом, но мне кажется, что при таком направлении освещения элементы под надписью police будут оставаться в тени. Вы добавили там блики "для красоты" или из каких-то других соображений?
P.S. Спасибо за статью!
Меня ещё удивило, что время работы от здоровенного аккумулятора всего лишь 9 часов. Насколько я помню, в телефонах серии nokia XpressMusic можно было музыку сутками слушать, они практически не разряжались, хотя тоже позиционировались для прослушивания музыки.
Может быть, это как-то связано с "усилителем".
Тоже ради интереса писал шашки на втором курсе — правда, подход был менее серьёзным. Как оказалось, алгоритм, который просчитывает вперёд на 3-4 хода, уже играет лучше меня. (4 моих и 4 хода программы, при съедении кого-нибудь глубина перебора конкретной ветки увеличивалась на 1).
Теоретически можно программой читать файлы (они загрузятся как расшифрованные), а потом отправлять содержимое куда-нибудь по сети, даже подавлять ничего не придётся. Но мне такой способ кажется костыльным, да и создатели криптолокеров вряд ли дадут вам возможность неограниченно расшифровывать файлы. (иначе можно будет спокойно пользоваться компьютером с криптолокером)
Так нет же адекватных тарифов с оплатой, пропорциональной трафику. Год назад выбирал тариф для эпизодического использования интернета на телефоне — почти у всех операторов либо конские цены (10р/мб), либо свинские ограничения (типа 20 мб/сутки с недешёвой доплатой за доп. трафик), либо псевдобезлимит на ~5гб за 400+ рублей.
Почему я не вижу тарифов "качайте сколько хочется по цене 10 копеек за мб"?
Сначала специально были созданы цены, которые вынуждали даже при небольшом использовании интернета переходить на безлимитные тарифы и платить за возможности, которые большинству не нужны. Потом люди, о ужас, начали использовать интернет на всю катушку, а денег с них больше получить не получается.
Форматирование кода в ide лёгким нажатием клавиш расставит всё по своим местам.
Ага, и в каждом примере шаблонные строчки
Кстати, тут неправда. Вы подменяете сравнение производительности процессоров сравнением мощности ядер, но у i7 8 виртуальных ядер и при большом количестве потоков он работает в 2.6*2 = 5.2 раз быстрее. (например, в параллельном варианте для n=32 у вас время больше 10 сек для Эльбруса и всего лишь 2 сек для i7)
Вы всю статью хвалите Эльбрус и во все таблицы пихаете отнормированные на частоту числа, вы бы ещё на "подгоночный коэффициент" их домножали, оно быть хоть честнее было.
Если бы целью было сравнение эффектов от оптимизаций, можно было бы неоптимизированный вариант брать за эталон и с ним уже сравнивать: "вот, такие-то действия ускоряют программу в 9 раз на i7 и в 20 раз на Эльбрусе".
У них не только память разная, у них разные архитектуры. Было бы удивительно, если бы архитектура VLIW давала меньшую производительность на такт в задачах, которые явно хорошо параллелятся.
Логичнее сравнивать отношение производительности к потребляемой мощности, но Эльбрус проиграет.
Странно, что Вы это не использовали. Можно было бы использовать инты и для больших значений — просто забить на переполнение, а всё подошедшее проверять честным расчётом на uint128. Вероятность случайных совпадений очень мала, поэтому "честные" проверки не займут много времени.
Этой возможности иногда не хватает при чтении в транспорте.
Ещё к компенсации перемещений можно попробовать добавить вращения — они могут возникать, если, например, держать телефон одной рукой сбоку в ландшафтном режиме. Но возможно, появится куча некрасивых эффектов сглаживания из-за вертикальных и горизонтальных элементов интерфейса.
Странно, что нет упоминания вингсьюта (вики). "Перепонки" вполне похожи на его уменьшенную версию, можно было бы использовать параметры от реальных полётов.
Можно. На андроиде код занимает очень малую часть от приложения. Если повыкидывать из приложения звуки, кастомные кнопочки, сплеш-скрин и прочие красивости, оно будет весить очень мало. Только пользователи будут недовольны, потому что им красивостей хочется, а размер +- 10 мб не важен.
Например, когда я писал небольшую игру на libgdx+scala, apk файл весил 3мб.
Внутри лежит classes.dex на 1.7 мб (большая часть — scala library), ещё 4.6 мб занимают библиотечки от libgdx, всё это с остальными ресурсами ужимается в апк размером в 3мб. (единственный косяк — библиотечки лежат сразу для пяти платформ, "x86", "x86_64", "armeabi", "armeabi-v7a", "arm64-v8a")
Ага, попробуйте поставить Windows Visual Studio. Даже если отключить все опции, она займёт 5 гб на диске. Для сравнения, образ линукса занимает около одного гигабайта. А в линуксе уже установлены gcc и прочие штуки для разработки.
java более-менее совместима со Scala/Kotlin/Groovy. Можно вызывать код, наследоваться от классов из другого языка и делать прочие вещи — потому что всё это компилируется в байткод. По той же причине код можно запускать на разных платформах.
Поддерживаю. Читатель нажмёт на кнопочку "сложно!", выразит свою позицию и не будет возмущаться, что статья по его мнению слишком сложная или слишком лёгкая.
Существует целая куча задач, которые проблематично вычислить без всякой np-полноты (Особенно если использовать "слишком большие данные"). Автор почему-то их не упомянул.
del