Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Базарная площадь
  
О разделе

Основная страница

Группы обсуждений


Тематический каталог обсуждений

Архив

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  09:36[Войти] | [Зарегистрироваться]
Обсуждение темы:
Оберон-технология: особенности и перспективы


Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение. 

Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру


Всего в теме 6256 сообщений

Добавить свое сообщение

Отслеживать это обсуждение

Обсуждение из раздела
Школа ОБЕРОНА

<<<... | 6086—6077 | 6076—6067 | 6066—6057 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 19


№ 6076   18-12-2007 16:49 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 6074« (AVC)
Вот этот:

http://www.netlib.org/benchmark/whetstone.c
___________________________

Ответ на »сообщение 6070« (QR)
___________________________

А какой сишный код использовался?
Вопрос, может быть, странный, но у меня в каталоге C:\XDS\SAMPLES\BENCH\ почему-то файла whet.c нет... :(
(Dry.c и linnew.c есть, а whet.c нет.)


№ 6075   18-12-2007 16:44 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 6071« (Борис Рюмшин)
Так ведь вроде предлагали ИГРЫ на Ящике писать, и как же там без floating point??
Я что, должен буду ждать единственно верной прорисовки сцены в три раза дольше просто потому, что компилятор после 486-го никто не развивал???
___________________________


Ответ на »сообщение 6070« (QR)
___________________________

Ответ на »сообщение 6037« (info21)
(MIPS - это миллион ветстоуновских инстр. в секунду). Т.е. налицо 3х-кратное превосходство Visual Studio. Использовался следуюший код

Если и действительно "язык с регулярным синтаксисом и отсутствием неструктурных операторов оптимизируется гораздо лучше", то хотелось бы иметь возможность также и практически пользоваться этими преимуществами, а не играть, по-принципу "ББ требует жертв", сегодня в игрушки с fps-ом соответствующим CPU 10-летней давности...

Обождите, граждане... но это тестирование работы оптимизатора FPU и основных инструкций, завязанных с ним. Естественно, стандартный набор инструкций 486-го, будет отличаться по скорости от оптимизированного под Core 2 (набор инструкций P3/4). Кто это отрицал?

Info21 говорит немного о других факторах быстродействия...

И что самое интересное, где Вам потребовалась высокая скорость работы с плавающей точкой?

Кстати, если уж совсем про скорость и качество (алгоритмическое)... возмём вот численные расчёты. Что лучше: 3 месяца считать и получить результат, или за тот же срок, с периодом в месяц получать хрень?


№ 6074   18-12-2007 16:35 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 6070« (QR)
___________________________

Предлагаю в качестве простейшего примера рассмотреть т.н. Whetstone benchmark (известная числодробилка, проверяется быстродействие основных операций), благо обероновский код для xds имеется. Результаты получились такие (процессор Pentium Core 2, 2,4 GHz):

Visual Studio 9.0 - Whetstone MIPS 3076.9
XDS - Whetstone MIPS 2579.804
BlackBox - Whetstone MIPS 1150.6

(MIPS - это миллион ветстоуновских инстр. в секунду). Т.е. налицо 3х-кратное превосходство Visual Studio. Использовался следуюший код...


А какой сишный код использовался?
Вопрос, может быть, странный, но у меня в каталоге C:\XDS\SAMPLES\BENCH\ почему-то файла whet.c нет... :(
(Dry.c и linnew.c есть, а whet.c нет.)
 AVC


№ 6073   18-12-2007 16:31 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 6072« (Борис Рюмшин)
___________________________
C обероном и игрался в 1999 году. Недолго, пару недель.
ББ не видел. Современное положение дел в обероне не знаю.
Поэтому свой давнишнее шапочное знакомство за таковое считать не могу.

а мы уже и Хаскеля обчитаться успели.......
Вот и хорошо, хоть какая польза от промывания мозгов :)


№ 6072   18-12-2007 16:17 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 6069« (Jack Of Shadows)
___________________________

Ответ на »сообщение 6068« (Илья Ермаков)
___________________________
Я оберон в глаза не видел, так что соседство ничего неозначает :)

Вот это да-а... :):):)

Он нам тут с 12-12-2002 22:42 (да уж 5 лет минуло...) мозги промывает, а сам ещё и Оберона не видел... а мы уже и Хаскеля обчитаться успели........

:D :D :D


№ 6071   18-12-2007 16:04 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 6070« (QR)
___________________________

Ответ на »сообщение 6037« (info21)
(MIPS - это миллион ветстоуновских инстр. в секунду). Т.е. налицо 3х-кратное превосходство Visual Studio. Использовался следуюший код

Если и действительно "язык с регулярным синтаксисом и отсутствием неструктурных операторов оптимизируется гораздо лучше", то хотелось бы иметь возможность также и практически пользоваться этими преимуществами, а не играть, по-принципу "ББ требует жертв", сегодня в игрушки с fps-ом соответствующим CPU 10-летней давности...

Обождите, граждане... но это тестирование работы оптимизатора FPU и основных инструкций, завязанных с ним. Естественно, стандартный набор инструкций 486-го, будет отличаться по скорости от оптимизированного под Core 2 (набор инструкций P3/4). Кто это отрицал?

Info21 говорит немного о других факторах быстродействия...

И что самое интересное, где Вам потребовалась высокая скорость работы с плавающей точкой?

Кстати, если уж совсем про скорость и качество (алгоритмическое)... возмём вот численные расчёты. Что лучше: 3 месяца считать и получить результат, или за тот же срок, с периодом в месяц получать хрень?


№ 6070   18-12-2007 15:16 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 6037« (info21)
Поскольку ссылки на код в указанном докладе не приводятся, сделать на его основе какое-то осмысленное заключение о быстроте ББ не представляется возможным.

Предлагаю в качестве простейшего примера рассмотреть т.н. Whetstone benchmark (известная числодробилка, проверяется быстродействие основных операций), благо обероновский код для xds имеется. Результаты получились такие (процессор Pentium Core 2, 2,4 GHz):

Visual Studio 9.0 - Whetstone MIPS 3076.9
XDS - Whetstone MIPS 2579.804
BlackBox - Whetstone MIPS 1150.6

(MIPS - это миллион ветстоуновских инстр. в секунду). Т.е. налицо 3х-кратное превосходство Visual Studio. Использовался следуюший код


MODULE TestWhet;
IMPORT  Log := StdLog, Services, Math;

(**********************************************************************
C    Benchmark #2 -- Double  Precision Whetstone (A001)
C
C    o This is a REAL*8 version of
C the Whetstone benchmark program.
C    o FOR-loop semantics are ANSI-66 compatible.
C    o Final measurements are to be made with all
C WRITE statements and FORMAT sttements removed.
C
C*********************************************************************)


TYPE ARRAY4 = ARRAY 5 OF REAL;

VAR E1                  : ARRAY4;
    T, T1, T2          : REAL;
    J, K, L            : INTEGER;
    ptime, time0, time1 : LONGINT;

PROCEDURE PA (VAR E : ARRAY4);
VAR J1 : INTEGER;
BEGIN
        J1 := 0;
        REPEAT
                E [1] := ( E [1] + E [2] + E [3] - E [4]) * T;
                E [2] := ( E [1] + E [2] - E [3] + E [4]) * T;
                E [3] := ( E [1] - E [2] + E [3] + E [4]) * T;
                E [4] := (-E [1] + E [2] + E [3] + E [4]) / T2;
                J1 := J1 + 1;
        UNTIL J1 >= 6;
END PA;

PROCEDURE P0;
BEGIN
        E1 [J] := E1 [K]; E1 [K] := E1 [L]; E1 [L] := E1 [J];
END P0;

PROCEDURE P3 (X,Y : REAL; VAR Z : REAL);
VAR X1, Y1 : REAL;
BEGIN
        X1 := X;
        Y1 := Y;
        X1 := T * (X1 + Y1);
        Y1 := T * (X1 + Y1);
        Z := (X1 + Y1) / T2;
END P3;

PROCEDURE POUT (N, J, K : INTEGER; X1, X2, X3, X4 : REAL);
VAR time1 : LONGINT;
BEGIN
        time1:=Services.Ticks();
        Log.IntForm (time1 - time0, Log.decimal, 7, 8FX, FALSE);
Log.IntForm (time1 - ptime, Log.decimal, 7, 8FX, FALSE);
Log.IntForm (N, Log.decimal, 8, 8FX, FALSE);
Log.IntForm (J, Log.decimal, 7, 8FX, FALSE);
Log.IntForm (K, Log.decimal, 7, 8FX, FALSE);
        Log.RealForm (X1, 5, 14, 2,8FX);
        Log.RealForm (X2, 5, 142,8FX);
        Log.RealForm (X3, 5, 14, 2,8FX);
        Log.RealForm (X4, 5, 14, 2,8FX);
        Log.Ln;
        ptime := time1;
END POUT;

PROCEDURE Do*;
VAR NLoop, I, II, JJ : INTEGER;
    N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11 : INTEGER;
    X1, X2, X3, X4, X, Y, Z : REAL;
BEGIN
        time0:=Services.Ticks();
        ptime := time0;
(* The actual benchmark starts here. *)
        T  := 0.499975;
        T1 := 0.50025;
        T2 := 2.0;
(* With loopcount NLoop=10, one million Whetstone instructions
  will be executed in each major loop.
  A major loop is executed 'II' times to increase wall-clock timing accuracy *)

        NLoop := 100;
        II    := 800;
        FOR JJ:=1 TO II DO
(* Establish the relative loop counts of each module. *)
                N1 := 0;
                N2 := 12 * NLoop;
                N3 := 14 * NLoop;
                N4 := 345 * NLoop;
                N5 := 0;
                N6 := 210 * NLoop;
                N7 := 32 * NLoop;
                N8 := 899 * NLoop;
                N9 := 616 * NLoop;
                N10 := 0;
                N11 := 93 * NLoop;
(* Module 1: Simple identifiers *)
                X1 := 1.0;
                X2 := -1.0;
                X3 := -1.0;
                X4 := -1.0;
                FOR I:=1 TO N1 DO
                        X1 := (X1 + X2 + X3 - X4)*T;
                        X2 := (X1 + X2 - X3 + X4)*T;
                        X3 := (X1 - X2 + X3 + X4)*T;
                        X4 := (-X1 + X2 + X3 + X4)*T;
                END;
                IF (JJ = II) THEN
                        POUT (N1, N1, N1, X1, X2, X3, X4);
                END;
(* Module 2: Array elements *)
                E1 [1] :=  1.0;
                E1 [2] := -1.0;
                E1 [3] := -1.0;
                E1 [4] := -1.0;
                FOR I:=1 TO N2 DO
                        E1 [1] := (E1 [1] + E1 [2] + E1 [3] - E1 [4])*T;
                        E1 [2] := (E1 [1] + E1 [2] - E1 [3] + E1 [4])*T;
                        E1 [3] := (E1 [1] - E1 [2] + E1 [3] + E1 [4])*T;
                        E1 [4] := (-E1 [1] + E1 [2] + E1 [3] + E1 [4])*T;
                END;
                IF (JJ = II) THEN
                        POUT (N2, N3, N2, E1 [1], E1 [2], E1 [3], E1 [4]);
                END;
(* Module 3: Array as parameter *)
                FOR I:=1 TO N3 DO
                        PA (E1);
                END;
                IF (JJ = II) THEN
                        POUT(N3, N2, N2, E1 [1], E1 [2], E1 [3], E1 [4]);
                END;
(* Module 4: Conditional jumps *)
                J := 1;
                FOR I:=1 TO N4 DO
                        IF (J # 1) THEN J := 3 ELSE J := 2 END;
                        IF (J <= 2) THEN J := 1 ELSE J := 0 END;
                        IF (J >= 1) THEN J := 0 ELSE J := 1 END;
                END;
                IF (JJ = II) THEN
                        POUT (N4, J, J, X1, X2, X3, X4)
                END;
(* Module 5: Omitted; Module 6: Integer arithmetic *)
                J := 1;
                K := 2;
                L := 3;
                FOR I:=1 TO N6 DO
                        J := J * (K-J) * (L-K);
                        K := L * K - (L-J) * K;
                        L := (L - K) * (K + J);
                        E1 [L-1] := J + K + L;
                        E1 [K-1] := J * K * L;
                END;
                IF (JJ = II) THEN
                        POUT (N6, J, K, E1 [1], E1 [2], E1 [3], E1 [4]);
                END;
(* Module 7: Trigonometric functions *)
                X := 0.5;
                Y := 0.5;
                FOR I:=1 TO N7 DO
                        X:=T*Math.ArcTan(T2*Math.Sin(X)*Math.Cos(X)/(Math.Cos(X+Y)+Math.Cos(X-Y)-1.0));
                        Y:=T*Math.ArcTan(T2*Math.Sin(Y)*Math.Cos(Y)/(Math.Cos(X+Y)+Math.Cos(X-Y)-1.0));
                END;
                IF (JJ = II) THEN
                        POUT (N7, J, K, X, X, Y, Y);
                END;
(* Module 8: Procedure calls *)
                X := 1.0;
                Y := 1.0;
                Z := 1.0;
                FOR I:=1 TO N8 DO
                        P3 (X,Y,Z);
                END;
                IF (JJ = II) THEN
                        POUT (N8, J, K, X, Y, Z, Z);
                END;
(* Module 9: Array references *)
                J := 1;
                K := 2;
                L := 3;
                E1 [1] := 1.0;
                E1 [2] := 2.0;
                E1 [3] := 3.0;
                FOR I:=1 TO N9 DO
                        P0;
                END;
                IF (JJ = II) THEN
                        POUT (N9, J, K, E1 [1], E1 [2], E1 [3], E1 [4])
                END;
(* Module 10: Integer arithmetic *)
                J := 2;
                K := 3;
                FOR I:=1 TO N10 DO
                        J := J + K;
                        K := J + K;
                        J := K - J;
                        K := K - J - J;
                END;
                IF (JJ = II) THEN
                        POUT (N10, J, K, X1, X2, X3, X4)
                END;
(* Module 11: Standard functions *)
                X := 0.75;
                FOR I:=1 TO N11 DO
                        X := Math.Sqrt (Math.Exp (Math.Ln (X)/T1))
                END;
                IF (JJ = II) THEN
                        POUT (N11, J, K, X, X, X, X)
                END;
(* THIS IS THE END OF THE MAJOR LOOP. *)
        END;
(* Stop benchmark timing at this point. *)
        time1:=Services.Ticks();
(*----------------------------------------------------------------
      Performance in Whetstone KIP's per second is given by
      (100*NLoop*II)/TIME
      where TIME is in seconds.
--------------------------------------------------------------------*)

        Log.Ln;
        Log.String ('Double Whetstone KIPS ');
        Log.RealForm(100.0 * NLoop * II * Services.resolution / (time1 - time0),5, 14, 0,8FX);
        Log.Ln;
        Log.String ('Whetstone MIPS ');
        Log.RealForm (NLoop* II * Services.resolution/((time1 - time0) * 10.0),5, 14, 0,8FX);
        Log.Ln;
END Do;
END TestWhet.



Если и действительно "язык с регулярным синтаксисом и отсутствием неструктурных операторов оптимизируется гораздо лучше", то хотелось бы иметь возможность также и практически пользоваться этими преимуществами, а не играть, по-принципу "ББ требует жертв", сегодня в игрушки с fps-ом соответствующим CPU 10-летней давности...
___________________________

Ответ на »сообщение 6036« (info21)
___________________________

Откуда сии факторы-то? У меня вот другие были:
http://www.inr.ac.ru/~blackbox/Oberon.Day/talks/ftkachov.pdf


там смотреть страницу 8.


№ 6069   18-12-2007 15:15 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 6068« (Илья Ермаков)
___________________________
Я оберон в глаза не видел, так что соседство ничего неозначает :)

Anyway, судя по вашему описанию, оберон гораздо ближе к исследовательскому полигону нежели его старший брат паскаль.

Идем дальше. А как у вас с удаленным подключением к программам ? Лисп и erlang оба позволяют подключаться к программе на любой машине и проделывать все тоже самое (смотреть и менять внутренности) так как будто, программа запущена локально.



№ 6068   18-12-2007 15:01 Ответить на это сообщение Ответить на это сообщение с цитированием
ООтвет на »сообщение 6066« (Jack Of Shadows)
___________________________


Есть такая возможночть в обероне ? Или надо каждый раз убивать запущенную программу, компилировать, запускать заново ?

Нуууу... Уж от Вас не ожидал.. Вроде столько лет рядом с темой Оберонов ходите, соседи, можно сказать :-)

Мы целый день напролёт этим Вашим интерпретатором пользуемся. "В одном сеансе", без перезапуска среды, прямо в ней что хотим тестим, запускаем, переделываем опять запускаем... Открываем окошко просмотра памяти и прямо мышкой гуляем по ссылкам и по чему хотим... На лету переделываем что угодно - от интерфейсов и реализаций модулей до - не говоря уже про такую мелочь - разметки диалогов. Перезапуск или "убивать" - да шо Вы, как можно! Шо ж мы, дикие сишники какие? :-) Только вот поначалу никто не верит, что всё это не интерпретация, а компиляция прямо в машинный код... с подгрузкой и отгрузкой по требованию.. Уж шибко всё похоже на Лиспы и Смоллтоки.


№ 6067   18-12-2007 14:11 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 6066« (Jack Of Shadows)
___________________________

1. Основной чертой исследовательского полигона является интерпретатор. Возможность вручную запустить любую функцию и посмотреть результат, не загружая для этого программу.

В Обероне единица исполнения -- это процедура.
Так что в обероновских осях и средах такая возможность есть.
Для этого процедура должна быть экспортирована.

2. В лиспе можно запущенную уже программу инспектировать и менять ее свойства, данные, переменные, функции, структуру обьектов. Все на лету, без перезагрузки запущенной программы, без потери работающей сессии.
<...>
Есть такая возможночть в обероне?

Такая возможность в обероновских средах есть.
(Я сейчас конкретно говорю о ББ, где диалоговые средства работают на основе метаинформации.)
Это и правда очень удобно.
 AVC


<<<... | 6086—6077 | 6076—6067 | 6066—6057 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 19


Добавить свое сообщение

Отслеживать это обсуждение

Дополнительная навигация:
Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру
  
Время на сайте: GMT минус 5 часов

Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Функция может не работать в некоторых версиях броузеров.

Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

 
© При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

Яндекс цитирования