-
61. Data: 2014-01-16 06:59:50
Temat: Re: pryszcze...
Od: Adam Klobukowski <a...@g...com>
On Wednesday, 15 January 2014 15:09:42 UTC+1, Maciej Sobczak wrote:
> W dniu środa, 15 stycznia 2014 14:01:40 UTC+1 użytkownik Adam Klobukowski napisał:
>
>
>
> > Nowoczesne silniki JS działające w trybie JIT [...]
>
> > Dzięki temu, potencjalnie może wygenerować lepszy kod niż kompilator języka
statycznego który ma skończony czas na wygenerowanie kodu i nie jest w stanie poznać
harakterystyki jego użycia.
>
>
>
> Etam. Po pierwsze, nie jest prawdą, że kompilator ma skończony czas na
wygenerowanie kodu. Nikt mu tego czasu nie ogranicza, może sobie kompilować ile tylko
chce. To właśnie JIT musi działać w (powiedzmy) "czasie rzczywistym" i nie może
pozwolić sobie na spędzanie dowolnie długiego czasu na czymkolwiek, bo jest to
aktywność dodatkowa w stosunku do tego, co chciał programista.
SKończony, w sensie że robi to tylko raz i nigdy nie będzie mógł poprawić tego co
zrobił. VM może to robić w 'nieskończoność'.
> Po drugie, nie jest prawdą, że JIT może analizować dane w run-time do podjęcia
takich decyzji (albo lepszych), jak kompilator, bo dane w run-time mogą się zmienić.
Np. skoro przez ostatnią godzinę indeks tablicy mieścił się w dozwolonym zakresie, to
co, JIT może podjąć decyzję, że nie trzeba już sprawdzać tego zakresu? Nie może
takiej decyzji podjąć. Natomiast w systemie statycznym można tak zrobić i we
wspomnianej tu Adzie jest to zupełnie rutynowe działanie.
Może, może. Po prostu generuje wersję funkcji dla zadanych parametrów. Jak przyjdą
inne, to musi wygenerować nowa wersję.
> Te dwie sprawy to dwa główne mity nt. JIT.
To nie są mity, takie rzeczy robinp. V8.
AdamK
-
62. Data: 2014-01-16 08:48:04
Temat: Re: pryszcze...
Od: Andrzej Jarzabek <a...@g...com>
On 15/01/2014 15:24, A.L. wrote:
> On Wed, 15 Jan 2014 08:03:30 +0100, Paweł Kierski <n...@p...net>
> wrote:
>>
>> Statyczna kontrola typów daje duże pole do popisu dla optymalizacji
>> przez kompilator. Vide - rozwijanie szablonów w C++.
>
> Szablony w C++ to zwykla makro. Mic nei ma wspolnego z systemem typow
No jednak ma o tyle, że generuje statyczne typy i funkcje korzystające z
nich. Tak wygenerowany wektor intów czy sortowanie intów kompilator może
lepiej zoptymalizować niż "wektor czegokolwiek" czy "sortowanie
czegokolwiek".
-
63. Data: 2014-01-16 08:51:12
Temat: Re: pryszcze...
Od: Andrzej Jarzabek <a...@g...com>
On 16/01/2014 05:59, Adam Klobukowski wrote:
>
> Może, może. Po prostu generuje wersję funkcji dla zadanych
> parametrów. Jak przyjdą inne, to musi wygenerować nowa wersję.
Musi jednak sprawdzić, czy parametry są takie czy inne, to też powoduje
narzut.
-
64. Data: 2014-01-16 09:51:47
Temat: Re: pryszcze...
Od: Maciej Sobczak <s...@g...com>
W dniu czwartek, 16 stycznia 2014 06:59:50 UTC+1 użytkownik Adam Klobukowski napisał:
> > Etam. Po pierwsze, nie jest prawdą, że kompilator ma skończony czas na
wygenerowanie kodu.
> SKończony, w sensie że robi to tylko raz i nigdy nie będzie mógł poprawić tego co
zrobił. VM może to robić w 'nieskończoność'.
VM ma skończone zasoby (w szczególności pamięć), więc nie może w nieskończoność
kumulować stanu. A biorąc pod uwage fakt, że budżet CPU na takie działania też jest
ograniczony, to ewentualna optymalizacja będzie miała efekt dopiero po jakimś czasie.
W przypadku kompilacji statycznej efekt jest od chwili startu a potem 100% CPU jest
dostępne dla aplikacji.
> > Po drugie, nie jest prawdą, że JIT może analizować dane w run-time do podjęcia
takich decyzji (albo lepszych), jak kompilator, bo dane w run-time mogą się zmienić.
Np. skoro przez ostatnią godzinę indeks tablicy mieścił się w dozwolonym zakresie, to
co, JIT może podjąć decyzję, że nie trzeba już sprawdzać tego zakresu? Nie może
takiej decyzji podjąć.
> Może, może. Po prostu generuje wersję funkcji dla zadanych parametrów. Jak przyjdą
inne, to musi wygenerować nowa wersję.
Rozumiem. Czyli nie musi sprawdzać zakresu indeksów, wystarczy że zamiast tego będzie
sprawdzał parametry funkcji i ewentualnie potem jednak znowu sprawdzi zakres
indeksów. Przy okazji zużywając jakiś procent CPU na zastanawianie się nad tym.
Nie przekonałeś mnie.
> To nie są mity, takie rzeczy robinp. V8.
Fajna, taka "sportowa" nazwa. :-)
--
Maciej Sobczak * http://www.msobczak.com * http://www.inspirel.com
-
65. Data: 2014-01-16 12:40:22
Temat: Re: pryszcze...
Od: firr <p...@g...com>
> Problem z językiem C polega na tym, że no niby ma statyczny system typów, ale tak
kiepski, że nie da się go na tym "dalszym poziomie" wykorzystać ani do optymalizacji
ani do wykrywania potencjalnych błędów.
jakich błedów na przykład, i jakiej optymalizacji
na przyklad?
(co do bledów to sie nie spotkałem, co do optymalizacji tez nie wiem o czym mowa
- a warto by pogadac konkretnie, zwlaszcza o
optymalizacji
-
66. Data: 2014-01-17 01:24:31
Temat: Re: pryszcze...
Od: A.L. <a...@a...com>
On Thu, 16 Jan 2014 07:48:04 +0000, Andrzej Jarzabek
<a...@g...com> wrote:
>On 15/01/2014 15:24, A.L. wrote:
>> On Wed, 15 Jan 2014 08:03:30 +0100, Paweł Kierski <n...@p...net>
>> wrote:
>>>
>>> Statyczna kontrola typów daje duże pole do popisu dla optymalizacji
>>> przez kompilator. Vide - rozwijanie szablonów w C++.
>>
>> Szablony w C++ to zwykla makro. Mic nei ma wspolnego z systemem typow
>
>No jednak ma o tyle, że generuje statyczne typy i funkcje korzystające z
>nich. Tak wygenerowany wektor intów czy sortowanie intów kompilator może
>lepiej zoptymalizować niż "wektor czegokolwiek" czy "sortowanie
>czegokolwiek".
Owszem. WIE o typach. Co nei zmienia faktu ze jest makro
A.L.
-
67. Data: 2014-01-17 01:31:35
Temat: Re: pryszcze...
Od: bartekltg <b...@g...com>
On 2014-01-17 01:24, A.L. wrote:
> On Thu, 16 Jan 2014 07:48:04 +0000, Andrzej Jarzabek
> <a...@g...com> wrote:
>
>> On 15/01/2014 15:24, A.L. wrote:
>>> On Wed, 15 Jan 2014 08:03:30 +0100, Paweł Kierski <n...@p...net>
>>> wrote:
>>>>
>>>> Statyczna kontrola typów daje duże pole do popisu dla optymalizacji
>>>> przez kompilator. Vide - rozwijanie szablonów w C++.
>>>
>>> Szablony w C++ to zwykla makro. Mic nei ma wspolnego z systemem typow
>>
>> No jednak ma o tyle, że generuje statyczne typy i funkcje korzystające z
>> nich. Tak wygenerowany wektor intów czy sortowanie intów kompilator może
>> lepiej zoptymalizować niż "wektor czegokolwiek" czy "sortowanie
>> czegokolwiek".
>
> Owszem. WIE o typach. Co nei zmienia faktu ze jest makro
Uważasz, zę programowanie generyczne to po prostu makra,
czy, że w c++ czegoś ważnego brakuje? Jeśli to drugie, to czego?
pzdr
bartekltg
-
68. Data: 2014-01-17 02:46:29
Temat: Re: pryszcze...
Od: "Stachu 'Dozzie' K." <d...@g...eat.some.screws.spammer.invalid>
On 2014-01-17, bartekltg <b...@g...com> wrote:
> On 2014-01-17 01:24, A.L. wrote:
>> On Thu, 16 Jan 2014 07:48:04 +0000, Andrzej Jarzabek
>> <a...@g...com> wrote:
>>
>>> On 15/01/2014 15:24, A.L. wrote:
>>>> On Wed, 15 Jan 2014 08:03:30 +0100, Paweł Kierski <n...@p...net>
>>>> wrote:
>>>>>
>>>>> Statyczna kontrola typów daje duże pole do popisu dla optymalizacji
>>>>> przez kompilator. Vide - rozwijanie szablonów w C++.
>>>>
>>>> Szablony w C++ to zwykla makro. Mic nei ma wspolnego z systemem typow
>>>
>>> No jednak ma o tyle, że generuje statyczne typy i funkcje korzystające z
>>> nich. Tak wygenerowany wektor intów czy sortowanie intów kompilator może
>>> lepiej zoptymalizować niż "wektor czegokolwiek" czy "sortowanie
>>> czegokolwiek".
>>
>> Owszem. WIE o typach. Co nei zmienia faktu ze jest makro
>
> Uważasz, zę programowanie generyczne to po prostu makra,
> czy, że w c++ czegoś ważnego brakuje? Jeśli to drugie, to czego?
Zapewne ani jedno, ani drugie.
Makro to konstrukcja nie operująca na *typach*, tylko na *kodzie*
(na drzewie wyprowadzenia w przypadku Lispa, na tekście w przypadku
preprocesora C/C++). Szablony w C++ nie pracują z typami, a jedynie
generują kawałki kodu wstawiając pewne adnotacje (typy mianowicie)
w odpowiednich miejscach.
--
Secunia non olet.
Stanislaw Klekot
-
69. Data: 2014-01-17 03:00:12
Temat: Re: pryszcze...
Od: bartekltg <b...@g...com>
On 2014-01-17 02:46, Stachu 'Dozzie' K. wrote:
> On 2014-01-17, bartekltg <b...@g...com> wrote:
>> On 2014-01-17 01:24, A.L. wrote:
>>> On Thu, 16 Jan 2014 07:48:04 +0000, Andrzej Jarzabek
>>> <a...@g...com> wrote:
>>>
>>>> On 15/01/2014 15:24, A.L. wrote:
>>>>> On Wed, 15 Jan 2014 08:03:30 +0100, Paweł Kierski <n...@p...net>
>>>>> wrote:
>>>>>>
>>>>>> Statyczna kontrola typów daje duże pole do popisu dla optymalizacji
>>>>>> przez kompilator. Vide - rozwijanie szablonów w C++.
>>>>>
>>>>> Szablony w C++ to zwykla makro. Mic nei ma wspolnego z systemem typow
>>>>
>>>> No jednak ma o tyle, że generuje statyczne typy i funkcje korzystające z
>>>> nich. Tak wygenerowany wektor intów czy sortowanie intów kompilator może
>>>> lepiej zoptymalizować niż "wektor czegokolwiek" czy "sortowanie
>>>> czegokolwiek".
>>>
>>> Owszem. WIE o typach. Co nei zmienia faktu ze jest makro
>>
>> Uważasz, zę programowanie generyczne to po prostu makra,
>> czy, że w c++ czegoś ważnego brakuje? Jeśli to drugie, to czego?
>
> Zapewne ani jedno, ani drugie.
>
> Makro to konstrukcja nie operująca na *typach*, tylko na *kodzie*
> (na drzewie wyprowadzenia w przypadku Lispa, na tekście w przypadku
> preprocesora C/C++). Szablony w C++ nie pracują z typami, a jedynie
> generują kawałki kodu wstawiając pewne adnotacje (typy mianowicie)
> w odpowiednich miejscach.
Czyli pytania nadal jest aktualne:
Skoro więc nie pierwsze, to czego brakuje w takim razie szablonom
z c++, aby stały się prawdziwą realizacją paradygmatu
programowania generycznego?
pzdr
bartekltg
-
70. Data: 2014-01-17 03:09:48
Temat: Re: pryszcze...
Od: "Stachu 'Dozzie' K." <d...@g...eat.some.screws.spammer.invalid>
On 2014-01-17, bartekltg <b...@g...com> wrote:
>>> Uważasz, zę programowanie generyczne to po prostu makra,
>>> czy, że w c++ czegoś ważnego brakuje? Jeśli to drugie, to czego?
>>
>> Zapewne ani jedno, ani drugie.
>>
>> Makro to konstrukcja nie operująca na *typach*, tylko na *kodzie*
>> (na drzewie wyprowadzenia w przypadku Lispa, na tekście w przypadku
>> preprocesora C/C++). Szablony w C++ nie pracują z typami, a jedynie
>> generują kawałki kodu wstawiając pewne adnotacje (typy mianowicie)
>> w odpowiednich miejscach.
>
> Czyli pytania nadal jest aktualne:
>
> Skoro więc nie pierwsze, to czego brakuje w takim razie szablonom
> z c++, aby stały się prawdziwą realizacją paradygmatu
> programowania generycznego?
Błąd: pytanie nie jest "nadal aktualne", tylko "nadal bezzasadne".
Programowanie generyczne można uprawiać i na systemie makr.
--
Secunia non olet.
Stanislaw Klekot