Quantcast

(no subject)

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

(no subject)

витя ерыгин
Передавать в пределах слова...
Действительно, как то двусмысленно.
Для слова, к примеру, надо три параметра. Чтобы не манипулировать ими на стеке, легче и быстрее их куда-нибудь раскидать. Хоть стек возвратов, как пример. Вот и возникла мысль попытаться засунуть переменную в регистр, и уже потом, когда возникнет необходимость положить переменную обратно на стек. Надеюсь, так быстрее будет работать?
У меня задача обработка запроса от mysql. Запрос выдаёт десять миллионов строк, потом их обработка и вывод в файл. Запрос длится чуть меньше часа, обработка длится 45 мин, а потом заново. Чем быстрее проходит обработка, тем быстрее выполнится поставленная задача.

1)  Оптимизировать алгоритм. - всё  просто, оптимизировать некуда
2) Написать критичный участок на ассемблере. - плохо знаю ассемблер. Только к нему приступил
3) Использовать другой форт-транслятор (например, с более мощным оптимизатором). - Какой, если не секрет?
4) Апгрейдить железо. - Это не вариант, к несчастью.



Вторник, 29 марта 2016, 15:26 +04:00 от Ruvim Pinka <ruvim.pinka@...>:

2016-03-28 18:27 GMT+03:00 витя ерыгин <vitai96@...>:
Можно ли передавать в пределах слова переменные через регистры? Если да, то какие именно?


Привидите пример такого слова, где хотелось бы передавать параметры через регистры.


"передавать в пределах слова" — это немного двусмысленно, т.к. параметры всегда передаются между словами.

Формат передачи параметров относится к ABI — application binary interface, и этот интерфейс фиксирован. Передавать параметры в одно и то же слово (в один и тот же экземпляр кода) по разным ABI (например, в одном месте через стек, а в другом месте через регистры) — весьма затруднительно. Поэтому, под каждый ABI должен быть сгенерирован свой экземпляр объектного кода.

В SP-Forth/4 первый параметр (верхний) передается через регистр EAX.

Кроме того, при inline-подстановке некоторого слова оптимизатором, передача параметров в это слово через стек может исчезнуть (при этом формируется свой экземпляр кода для исходного слова под конкретное место).



Если нет, то как ещё можно подъускорить программу на форте?
А каков размер программы (или фрагмента), которую требуется ускорить? Измерения проводились? Будет ошибой делать оптимизацию без проведения подробных измерений.
 
Варианты подускороить в общем известны:
— Оптимизировать алгоритм.
— Написать критичный участок на ассемблере.
— Использовать другой форт-транслятор (например, с более мощным оптимизатором).
— Апгрейдить железо.


--
Ruvim




------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re:

Dmitry Yakimov
Привет,

Думаю здесь только вариант 1. Индексы, кэши, сменить мускуль на вот эту например http://www.h2database.com/html/main.html несмотря что она на java у нее есть odbc драйвер. По тестам примерно в два раз быстрее мускуля.
SPF4 очень быстрый, почти как Си.

Дмитрий.


------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: (Без темы)

Бомбин Валентин
In reply to this post by витя ерыгин
Смотри план запроса. Где-то не оптимально у тебя что-то с индексами, или перестрой задачу полностью (например используй олап), сделай обработку параллельной. Может имеет смысл реляционные БД заменить на noSQL. В общем не зная задачи -только общие слова. И скорость обработки тут точно не причем пока

--
С уважением, Бомбин Валентин
тел 79114208298


29.03.2016, 21:34, "витя ерыгин" <[hidden email]>:

> Передавать в пределах слова...
> Действительно, как то двусмысленно.
> Для слова, к примеру, надо три параметра. Чтобы не манипулировать ими на стеке, легче и быстрее их куда-нибудь раскидать. Хоть стек возвратов, как пример. Вот и возникла мысль попытаться засунуть переменную в регистр, и уже потом, когда возникнет необходимость положить переменную обратно на стек. Надеюсь, так быстрее будет работать?
> У меня задача обработка запроса от mysql. Запрос выдаёт десять миллионов строк, потом их обработка и вывод в файл. Запрос длится чуть меньше часа, обработка длится 45 мин, а потом заново. Чем быстрее проходит обработка, тем быстрее выполнится поставленная задача.
>
> 1)  Оптимизировать алгоритм. - всё  просто, оптимизировать некуда
> 2) Написать критичный участок на ассемблере. - плохо знаю ассемблер. Только к нему приступил
> 3) Использовать другой форт-транслятор (например, с более мощным оптимизатором). - Какой, если не секрет?
> 4) Апгрейдить железо. - Это не вариант, к несчастью.
>
> Вторник, 29 марта 2016, 15:26 +04:00 от Ruvim Pinka <[hidden email]>:
>
> 2016-03-28 18:27 GMT+03:00 витя ерыгин <[hidden email]>:
>> Можно ли передавать в пределах слова переменные через регистры? Если да, то какие именно?
>
> Привидите пример такого слова, где хотелось бы передавать параметры через регистры.
>
> "передавать в пределах слова" — это немного двусмысленно, т.к. параметры всегда передаются между словами.
>
> Формат передачи параметров относится к ABI — application binary interface, и этот интерфейс фиксирован. Передавать параметры в одно и то же слово (в один и тот же экземпляр кода) по разным ABI (например, в одном месте через стек, а в другом месте через регистры) — весьма затруднительно. Поэтому, под каждый ABI должен быть сгенерирован свой экземпляр объектного кода.
>
> В SP-Forth/4 первый параметр (верхний) передается через регистр EAX.
>
> Кроме того, при inline-подстановке некоторого слова оптимизатором, передача параметров в это слово через стек может исчезнуть (при этом формируется свой экземпляр кода для исходного слова под конкретное место).
>
>> Если нет, то как ещё можно подъускорить программу на форте?
> А каков размер программы (или фрагмента), которую требуется ускорить? Измерения проводились? Будет ошибой делать оптимизацию без проведения подробных измерений.
>
> Варианты подускороить в общем известны:
> — Оптимизировать алгоритм.
> — Написать критичный участок на ассемблере.
> — Использовать другой форт-транслятор (например, с более мощным оптимизатором).
> — Апгрейдить железо.
>
> --
> Ruvim
>
> ,
>
> ------------------------------------------------------------------------------
> Transform Data into Opportunity.
> Accelerate data analysis in your applications with
> Intel Data Analytics Acceleration Library.
> Click to learn more.
> http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140
> ,
>
> _______________________________________________
> Spf-dev mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/spf-dev

------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

forthd и небольшая консоль на Qt-5

Мохов Геннадий
Я тут собрал немного более продвинутый вариант консоли для форта на Asm D.

Запуск: start.bat - как пример
Слово S" ABC" кладет на стек адрес указывающий на 4, 'A', 'B', 'C', 0 - специально под С функции
Операций с плавающей точкой НЕТ.

История вопроса: http://fforum.winglion.ru/viewtopic.php?f=2&t=3044&p=41221

MGW

------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: forthd и небольшая консоль на Qt-5 --- !!! Забыл архив вложить!!! Это с архивом!

Бомбин Валентин
На будущее можно попросить на гит ложить проекты? Так ведь всем удобнее будет

--
С уважением, Бомбин Валентин
тел 79114208298


30.03.2016, 18:13, "Мохов Геннадий" <[hidden email]>:
>  Я тут собрал немного более продвинутый вариант консоли для форта на Asm D.
>
>  Запуск: start.bat - как пример
>  Слово S" ABC" кладет на стек адрес указывающий на 4, 'A', 'B', 'C', 0 - специально под С функции
>  Операций с плавающей точкой НЕТ.
>
>  История вопроса: http://fforum.winglion.ru/viewtopic.php?f=2&t=3044&p=41221
>
>  MGW

------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Loading...