IPB

Здравствуйте, гость ( Вход | Регистрация )

26 страниц V  « < 21 22 23 24 25 > »   
Reply to this topicStart new topic
> Языки программирования
Etoprostoya
сообщение 31 May 2011, 20:00
Сообщение #441

Etoprostostatus
Сообщений: 8 527
Спасибо сказали: 15833 раза




Ограничение в 4 миллиарда - естественное ограничение для 32 бит, так что могу и воспользоваться, если будет нужно и если программа достаточно быстра.
А для бОльших чисел нужно использовать 64-битную арифметику или длинные числа.
Критикую так потому, что алгоритм мне кажется странным, а комментариев нет.


--------------------
Etoprostopodpis'
Go to the top of the pageAdd Nick
 
+Quote Post
tolich
сообщение 09 Jun 2011, 10:09 (Сообщение отредактировал tolich - 09 Jun 2011, 10:10)
Сообщение #442

😸🧡✊✌️
Сообщений: 16 024
Спасибо сказали: 2664 раза




Тут мне задали вопрос, действительно ли xorswap работает быстрее, чем использование доп. переменной. Подумав, я понял, что
Цитата
Цитата
А такая беда только в гамаке или в любом языке?
В других языках есть целые переменные. А насчет быстродействия, скажем, для Си:
Код
int t=x; x=y; y=t;
скорее всего, превратится в
Код
mov EAX,x // а x,y и t что-то навроде [EBP+число]
mov t,EAX
mov EAX,y
mov x,EAX
mov EAX,t
mov y,EAX
А
Код
x^=y; y^=x; x^=y;
в
Код
mov EAX,x
xor y,EAX
mov EAX,y
xor x,EAX
mov EAX,x
xor y,EAX

Учитывая, что на современных процессорах и mov, и xor выполняются за 1 такт, разницы никакой, только аж 4 байта памяти экономится.


--------------------
Я слежу за тобой!
* tolic.narod.ru

Lu...pa...gamhi...dho?
Go to the top of the pageAdd Nick
 
+Quote Post
Etoprostoya
сообщение 09 Jun 2011, 11:35
Сообщение #443

Etoprostostatus
Сообщений: 8 527
Спасибо сказали: 15833 раза




К предыдущему посту.
Код программы

Компиляция
Код
cl /O2 /FAcs memswap.cpp

Код функций в асме

Результат
Код
E:\Projects\2>memswap.exe
Time to swap with temporary var is 1328
Time to swap with XOR is 1328


P.S. Сейчас попробую на интеловском оптимизирующем компиляторе попробовать.

Код
E:\Projects\2>memswap.exe
Time to swap with temporary var is 156
Time to swap with XOR is 234

Интеловский компилятор оправдал мои ожидания и обманул меня, переиначив алгоритм. gigi.gif
По сути, результат тот же, но алгоритм другой.


--------------------
Etoprostopodpis'


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
tolich
сообщение 09 Jun 2011, 11:50
Сообщение #444

😸🧡✊✌️
Сообщений: 16 024
Спасибо сказали: 2664 раза




Оптимизация, конечно, наше всё, но как научить компилятор использовать XCHG?

Код
mov eax,x
xchg eax,y
mov x,eax
lol?

Или интеловский компилятор его использует? 0_0


--------------------
Я слежу за тобой!
* tolic.narod.ru

Lu...pa...gamhi...dho?
Go to the top of the pageAdd Nick
 
+Quote Post
Etoprostoya
сообщение 09 Jun 2011, 12:48
Сообщение #445

Etoprostostatus
Сообщений: 8 527
Спасибо сказали: 15833 раза




Нет, интеловский компилятор это не использует и вообще рекомендуют
Цитата('Intel Optimization Reference Manual')
minimize the use of xchg instructions on memory locations


А там, где интеловский компилятор в несколько раз обогнал по быстродействию программ, он просто переиначил двойной цикл
for(;i<1000;i++) for(;j<100000;j++)
в
for(;j<100000;j++) for(;i<1000;i++)
что, естественно, быстрее, так как подгружать маленькие блоки памяти можно быстрее. То есть, компилятор оптимизировал работу с памятью и всё, а майкрософтский не додумался до этого.


--------------------
Etoprostopodpis'
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 12 Jun 2011, 19:08
Сообщение #446

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




Цитата(etoprostoya @ 31 May 2011, 14:00) *
Ну да, всего лишь 4 миллиарда прогона цикла gigi.gif
в нормальных компиляторах
Код
for(uint i=0; i; ++i)
это 0 прогонов цикла


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
tolich
сообщение 12 Jun 2011, 19:17 (Сообщение отредактировал tolich - 12 Jun 2011, 19:18)
Сообщение #447

😸🧡✊✌️
Сообщений: 16 024
Спасибо сказали: 2664 раза




Да и в ненормальных тоже.

Этопростоон явно имел в виду:
Код
for(uint i=0; ; ++i)

ибо для uint i выражение i<0xFFFFFFFE всегда было бы true, если uint 16-битный.


--------------------
Я слежу за тобой!
* tolic.narod.ru

Lu...pa...gamhi...dho?
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 12 Jun 2011, 21:37
Сообщение #448

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




где мы, а где 16битные процессоры?
Go to the top of the pageAdd Nick
 
+Quote Post
tolich
сообщение 12 Jun 2011, 23:22
Сообщение #449

😸🧡✊✌️
Сообщений: 16 024
Спасибо сказали: 2664 раза




Хм, я еще и восьмибитные не забыл.


--------------------
Я слежу за тобой!
* tolic.narod.ru

Lu...pa...gamhi...dho?
Go to the top of the pageAdd Nick
 
+Quote Post
Etoprostoya
сообщение 12 Jun 2011, 23:24
Сообщение #450

Etoprostostatus
Сообщений: 8 527
Спасибо сказали: 15833 раза




А я четырёхбитный придумывал smile.gif

Серьёзно.


--------------------
Etoprostopodpis'
Go to the top of the pageAdd Nick
 
+Quote Post
hippocamus
сообщение 13 Jun 2011, 00:24
Сообщение #451

пират с чёрной меткой
Сообщений: 23 634
Спасибо сказали: 12913 раза




А чего его придумывать? 4-битный ZX-Spectrum 8080 smile.gif Прямой предок IBM AT 8086


--------------------
Давший быка на убой не выпросил и печень на жаркое.
Go to the top of the pageAdd Nick
 
+Quote Post
Etoprostoya
сообщение 13 Jun 2011, 07:37
Сообщение #452

Etoprostostatus
Сообщений: 8 527
Спасибо сказали: 15833 раза




Во-первых, ZX-Spectrum - 8-битный.
А во-вторых, я придумывал узкоспециализированный процессор для торгового автомата.


--------------------
Etoprostopodpis'
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 14 Aug 2011, 11:48
Сообщение #453

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5934 раза




http://www.red-lang.org/ - внезапно заинтриговало.
Свободный, компилируемый, с синтаксисом а-ля REBOL...


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 29 Mar 2012, 10:41
Сообщение #454

laughed as one fey
Сообщений: 12 166
Спасибо сказали: 20585 раз




Кто-нибудь с генетическим программированием игрался? Не с алгоритмами, а именно с программированием - выращиванием программы из дерева операторов?


Цитата
А я четырёхбитный придумывал

Серьёзно.

Курсовик какой-то?)


Go to the top of the pageAdd Nick
 
+Quote Post
Etoprostoya
сообщение 29 Mar 2012, 11:01
Сообщение #455

Etoprostostatus
Сообщений: 8 527
Спасибо сказали: 15833 раза




Курсовик, да.


--------------------
Etoprostopodpis'
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 29 Mar 2012, 11:12
Сообщение #456

laughed as one fey
Сообщений: 12 166
Спасибо сказали: 20585 раз




У нас тоже был..только не с темой, а процессор вообще - пять команд (у меня, впрочем, было примерно 25-30 хD), двуоперандные, однооперандные, безоперандные.
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 18 May 2012, 21:22
Сообщение #457

laughed as one fey
Сообщений: 12 166
Спасибо сказали: 20585 раз




Так, вопрос.

Слышал/видел/знает ли кто алгоритм разбиения на треугольники невыпуклого полигона с прорехами внутри?
Go to the top of the pageAdd Nick
 
+Quote Post
tolich
сообщение 18 May 2012, 21:27
Сообщение #458

😸🧡✊✌️
Сообщений: 16 024
Спасибо сказали: 2664 раза




Это называется "триангуляция".


--------------------
Я слежу за тобой!
* tolic.narod.ru

Lu...pa...gamhi...dho?
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 18 May 2012, 21:31 (Сообщение отредактировал feanor - 18 May 2012, 21:34)
Сообщение #459

laughed as one fey
Сообщений: 12 166
Спасибо сказали: 20585 раз




Я знаю. Более того, я знаю, что гугл полон ссылок на алгоритмы триангуляции невыпуклых полигонов. Однако насчет прорех я ничего найти не смог - а напрягать остатки геометрического мышления в облом.
Go to the top of the pageAdd Nick
 
+Quote Post
IvanSav
сообщение 18 May 2012, 22:32
Сообщение #460

VCMI developer
Сообщений: 377
Спасибо сказали: 690 раз




Хмм... Как насчет такого?
http://algolist.manual.ru/maths/geom/polygon/decompose.php
Насколько я понял, алгоритм будет работать и с прорехами. Одно но - на выходе будут не треугольники а все те же полигоны, но уже без дыр. Так что полученые полигоны еще нужно будет разбить на треугольники.

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


--------------------
Слава Україні!


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post

26 страниц V  « < 21 22 23 24 25 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 20 April 2024 - 16:06
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика