Обсуждение МК-152 на форуме HP

Все-таки, культурка заметно отличается. Леммингов, которым устройство не нужно в принципе, но готовых с пеной у рта поливать его помоями, не замечено.

Ссылка на обсуждение

Комментарии

Нас уже включили в табличку Calculator Benchmark http://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/articles.cgi?read=700 - нас уже включили в табличку Calculator Benchmark

Огорчительно, что лучший из советских ПМК - МК-52 в таблице на 1 месте... как самый тормозной.

Утешительно, что МК-152 показывает вполне достойные результаты, оставляя позади многих "именитых" соперников... Результат, скажем, интересный для практического применения. Понятно, что нас обставляют последние модели, да еще на компилируемых языках. А вот то, что нас делает Psion Netbook на OPL (байткод) и даже Psion Series 3a для меня было сначала неожиданностью.

Калькуляторы с наладонниками по скорости даже сравнивать бессмысленно, это просто разного класса устройства. Я попробовал написать ферзей на своем виндовом телефоне (процессор - 400МГц самсунг) на питоне - получил 6 секунд несмотря на то, что для ясности сделал код намеренно НЕоптимальным, а также выдаю не количество перебранных вариантов, а полный список решений:

def q(n, k):
    if k==0:
        yield []
    else:
        for s in q(n, k-1):
            for i in range(n):
                if not any(abs(s[j] - i) in (0, k-1-j) for j in range(k-1)):
                    yield s + [i]

print list(q(8, 8))

Да, если кому вдруг интересно, скоро у меня может получиться микрокодовый эмулятор первого в мире ПМК HP-65 на Javascript. По крайней мере инженерный HP-35 в виде одного 9-килобайтного html уже работает. Жаль, что нет полного микрокода МК-52 - для его безумных синхро- и микрокоманд эмулятор написать явно сложнее, но интереснее.

Разница между оптимальным или неоптимальным на таком переборном алгоритме вряд ли будет ощутимой.
Попробую найти что-нибудь для кассиопеи :)

P.S. Корневое сообщение про "нас включили в бенчмарк" - это ваше?

А, я опять забыл, что надо найти только одно решение. Тогда получается не 6 секунд, а 300 миллисекунд.

for i in range(100):
    for x in q(8, 8):
        break

Нет, то сообщение не мое.

У меня уже работают второй инженерный HP-45 и финансовый HP-80. Как сделаю HP-65 и HP-55 - выложу куда-нибудь.

Таки все. Насколько я понял из кода, перебираются все варианты, на выходе - число узлов дерева.

Я распечатал все эти 876 узлов - в них во всех первый ферзь стоит на a1 (ну или на a8, в зависимости от алгоритма). Так что, если программа для МК-52 вдруг находит все решения, а не одно, то для бенчмарка ее надо переделать, и результат станет намного лучше.

Аналогично. Проверил на дельфи паскальный код теста, 876 узлов перебирается для получения первой позиции. А позиция в итоге та же, что на ПМК по самой первой программе.

Т.е. результат в 8 секунд корректный. Будем ориентироваться на этот результат.

Удивительно. Когда я просто тупо перевел взятый из бенчмарка код с Lua на питон, 300 миллисекунд превратились в 42, а на компьютере этот вариант всего на 30% быстрее моего. Видимо, выделение памяти в карманной версии намного менее эффективно.

Так что примерно так:

- 0.042 Glofiish X500+ Python / Bytecode / SC32442 @ 400 MHz

Psion netBook со своими 190 МГц, правда, обгоняет, но и интерпретатор другой.

А каким образом Вы померяли 300 мсек?
Я не силен в Питоне - есть ли там трассировки или логи с системным временем?
Свои 4.5 секунды тупо мерял секундомером, нажимая кнопку.

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Как и в тесте на Lua из бенчмарка - стократным запуском. Ну а 42мс - тысячекратным.

import datetime

dt = datetime.datetime.today()
for i in range(100):
    for s in q(8, 8):
        break
print datetime.datetime.today() - dt

Если нигде не ошибся, то стократный пробег дал 185 мсек

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

А вот порт с Lua, который дает у меня 42мс. У вас, видимо, будет раза в полтора-два быстрее.

import datetime
dt = datetime.datetime.today()
for i in range(1000):
    r = 8
    s = 0
    x = 0
    a = (r+1)*[0]
    while True:
        x += 1
        a[x] = r
        while True:
            s += 1
            y = x
            while y > 1:
                y -= 1
                t = a[x] - a[y]
                if t < 0:
                    t = -t
                if t == 0 or x - y == t:
                    y = 0
                    a[x] -= 1
                    while a[x] == 0:
                        x -= 1
                        a[x] -= 1
            if y == 1:
                break
        if x == r:
            break
print s, datetime.datetime.today() - dt

Похоже, что нет:
876 0:01:58.745330

Что дает 136 мсек?

странно

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Нет, 119. Делить надо на 1000, 876 печатается только для проверки правильности.

Все это очень странно :)

Попробовал данный вариант на Питоне в Нокиа N800. Результат - 4.5 секунды

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Калькуляторы с наладонниками

/home/user/python> uname -a
Linux pbleee 2.6.21.4-eeepc #2 Mon Sep 24 14:09:46 EDT 2007 i686 GNU/Linux
/home/user/python> cat eightqueens.py
def any(iterable):
  for element in iterable:
    if element:
     return True
  return False
def q(n, k):
  if k==0:
    yield []
  else:
    for s in q(n, k-1):
      for i in range(n):
        if not any(abs(s[j] - i) in (0, k-1-j) for j in range(k-1)):
          yield s + [i]
print len(list(q(8, 8)))
/home/user/python> python -V
Python 2.4.4
/home/user/python> time python eightqueens.py
92

real    0m0.264s
user    0m0.250s
sys     0m0.000s
/home/user/python>

Celeron M ULV @630MHz

МК-52 должен быть медленнее старых моделей, т.к. в последовательную шину включена ещё одна микроЭВМ, давшая 105 шагов, 15-й регистр и новые команды с клавишей К.

Вот быстродействие МК-52 и МК-61 сравнить не берусь, т.к. не помню, привело ли добавление ППЗУ к включению дополнительной микроЭВМ.

У меня МК-52 медленнее. Я имею 2 калькулятора:
1. МК-61 1986 года производства. Интенсивно использовался в 1986-1990 годах.
2. МК-52 1992 года производства. Выпущен уже другим заводом не в Киеве - г. Борзна Черниговская обл. з-д. Квадр.
У меня на руках сейчас схемы обоих калькуляторов. МК-61 имеет по сравнения с МК-54/34 1 добавочную микросхему D6 K745ИК1306-2. Интересно, что ее можно выключить поместив перемычку П1 на П2 и превратить МК-61 в МК-54...
МК-52 имеет еще одну добавочную микросхему в 1-разрядном кольце передачи данных. Это DD7 К745ИК1801-2. Еще есть микросхема для долговременного хранения программ DD8 КР1601РР1, но она не включена в общее кольцо передачи данных. При одинаковых частотах МК-52 должен быть медленнее МК-61, так как дополнительный контроллер вносит задержку в кольце передачи данных. Мой экземпляр, действительно медленнее. Следует учитывать, что в калькуляторах МК-61 имеется большой разброс тактовой частоты. Поэтому на практике, могут быть МК-61 работающие медленнее некоторых экземпляров МК-52. Всё же надо признать, что МК-52 ОЧЕНЬ медленный калькулятор... :-)

Какое время счета? Какое время счета получилось?
AtH замерял на своем МК-56.
Читал где-то про разброс частот в районе 10%, что при такой медленной работе все равно будет малозаметно.

Разброс можно высчитать, исходя из количества микроЭВМ. При равной тактовой частоте длительность вычислений на МК-52 и МК-61 (а также МК-61 и МК-56) будет относиться, как (N+1) к N, где N - количество микроЭВМ в младшей модели.

Тест скрости... Я провел сейчас тест скорости 2-х калькуляторов на вычислении факториала.
Коды программы с шага 0:
0c 40 01 60 12 5d 03 50 51 00
ВП П0 1 ИП0 х FL0 03 С/П БП 00

Результат для факториала 69!
МК-61: 43,1 с
МК-52: 77,8 с.

Из теста получается почти 2-х кратное превосходство МК-61. Следует отметить, что мой экземпляр МК-61 довольно быстрый изначально. Он с трудом поддавался разгону. Разгон давал приблизительно 20% прирост скорости, но не гарантировалась правильность вычислений. Поэтому в 1988 году я вернул заводские настройки. Согласно времени приводимому в книгах Дьяконова для Б3-34 и МК-56 в решении тестовых примеров мой МК-61 всегда показывал лучшее время. В 80-х годах мне попадались МК-61 которые имели аналогичную скорость или были немного медленнее. Теоретически, я допускаю существование сверхнеудачных экземпляров МК-61, которые медленее МК-52. Однако таких не видел. :-)

Интересно. Может быть для чистоты эксперимента прогоните и 8 ферзей?
Там, правда, счет пойдет на часы.

Результаты теста 8-ми ферзей... Результаты теста 8 ферзей (первая программа http://pmk.arbinada.com/node/26 ).
МК-61: 2 часа 6 минут = 126 минут
МК-52: 3 часа 47 минут = 227 минут
Превосходство в скорости МК-61 над МК-52 в 1,8 раза. Над приводимым ранее МК-56 (189 минут) в 1,5 раза...
МК-61 и МК-52 имеют стандартную, заводскую, частоту.

Спасибо. Весьма интересные результаты.

Thanks... Thanks to all testers of this forum, especially Serguei, for helping to enlarge
the Calculator Benchmark with these interesting devices. With your permission,
I have corrected the results in consideration of your discussion.

You have surly noticed, the main emphasisses of this benchmark are programmable
calculators and pocket computers. So if somebody has the opportunity to test
the MK-85, MK-85M (Normal and Fast Mode) or MK-90, more results are welcome.

If there is any outstanding point regarding the benchmark, don't hesitate to ask me.

МК-61 имеет команду K|x|, а МК-56 не имеет. Возможно, это так и повлияло на результат. А (вторая) лишняя микроЭВМ в МК-52 затормозила вычисления.

Citizen SRP 400GЯ запустил 8 ферзей на Citizen SRP 400G.
14 мин. 10 сек.
Подробности см. на http://www.leninburg.com/calc/cforum.php?page=3&forumid=4&topicid=182

Медленно. Да, медленно... Спасибо за информацию. Наши подробные итоги с МК-152, если еще не смотрели, здесь: http://pmk.arbinada.com/node/30

Может быть заодно и точность померяете? Тесты и табличка (ее можно редактировать) результатов здесь: http://pmk.arbinada.com/node/97

Обращаю внимание. Измерим и точность.

На то, что SRP-400G работает слишком медленно - есть свои ОСОБЫЕ причины. См. там же:
http://www.leninburg.com/calc/cforum.php?page=3&forumid=4&topicid=182

Да, я читал. Возможно действительно отображение во время счета влияет на время, хотя не думаю, что так сильно. Как отключить - пока не знаю. Попробуйте оставить вопрос на местном форуме.

Не побоюсь обобщить, но это характерно для русскоязычных форумов - загнуть пальцы и пополивать грязью. Надеюсь, что есть тенденция к лучшему

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Поливают, потому что это просто позор.

Согласен. Это просто позор и стыд. За бескультурие и невежество "соотечественников". Ступайте учиться (3 раза) культуре и терпимости у иностранных коллег.
Следующая подобная бессмысленная реплика будет удалена без предупреждения.

Кстати, страницы http://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/forum.cgi?read=129515 уже не существует и мне пришлось читать ее гугловскую закэшированную версию.

Интересно, ее специально кто-то удалил или правила такие?
Или она просто другой адрес имеет?

Ушла в архив. Ссылку обновил.

MK-56 и K|x| ? Если я правильно помню, K|x| у MK-56 не было.
(Похоже, что правильно - http://www.pmk.arbinada.com/node/26 :
"AtH воспользовался своим старинным другом - ПМК МК-56, заменил в нашей первой программе для МК-52 оператор K|x| на Fx<0 nn /—/ и запустил программу.")

А там ( http://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/articles.cgi?read=700 )
программа одна и та же приводится для всех.
Надо ли им об этом сообщать? ~_^

Можно не сообщать: в тесте главное - время, оно замерено. Воспроизвести тест для старых моделей можно и по новой программе, сделав упомянутую замену.