thedeemon: (Default)
Dmitry Popov ([personal profile] thedeemon) wrote2021-02-21 06:33 pm

M1

Позапускал тут одну свою программку (тупое решение Project Euler #300, много простых операций с интами, умещающимися в кэше) на двух ноутах. На одном Intel Core i7, на другом Apple M1. Так вот, даже в режиме эмуляции x86_64 M1 немного быстрее. А в родном для него arm64 - много быстрее.



                        L=13 1-thread  parallel ; L=14 parallel
 Intel Core i7 2.6 GHz           20.0      4.06 ;         22.02
 M1 running x86_64              15.65      3.15 ;         18.06
 M1 running arm64               11.84      2.44 ;         13.7
                                       time in seconds

https://gist.github.com/thedeemon/ec45c44e14c3205075f66d4bc3f92abf
Компилятор на обоих - LDC (LLVM-based).

Кстати, про Project Euler. Вы решили задачку #100? Я чего-то туплю, не решил пока.
chaource: (Default)

[personal profile] chaource 2021-02-21 08:38 pm (UTC)(link)
Нужно найти цѣлыя числа m > n > 0 такiе, что 2*m*(m-1) = (m+n)*(m+n-1)

Думаю, въ этой задачѣ имѣли въ виду переборъ: предполагалось для фиксированнаго m+n перебирать допустимыя значенiя m (ихъ всего O(1), т.к. можно рѣшить уравненiе 2*m*(m-1)=Q для заданнаго Q). Потомъ переходить къ слѣдующему значенiю m+n.

Но если свести задачу къ уравненiю Пелля, то можно будетъ написать рѣшенiе въ видѣ формулы. Тогда Euler #100 рѣшается за O(1).