Thread View: pl.comp.lang.funkcyjne
9 messages
9 total messages
Started by Andrzej M. Ostruszka
Wed, 04 Dec 2002 09:11
OCaml: Współdzielenie pomiędzy rekordami ...
Author: Andrzej M. Ostruszka
Date: Wed, 04 Dec 2002 09:11
Date: Wed, 04 Dec 2002 09:11
27 lines
1598 bytes
1598 bytes
Hej,
To może żeby zacząc tak jakoś bardziej konstruktywnie następujące
pytanie :)
Jeżeli mam rekord który zawiera float'y ale nie składa się tylko
z float'ów więc one sa pudełkowane(?? tak się to mówi ??) to jak zrobić
tak by dany float był współdzielony pomiędzy różnymi rekordami
i modyfikacja w jednym była widoczna we wszystkich?
Coś w stylu (niezbyt to czytelne ale chyba widać o co mi chodzi)
float
___ / \ ___
x -----/ \----- x
y --- y ---> float
. \ .
. \ float .
--- ---
Pozdrawiam
--
____ _ ___
/ | \_/ |/ _ \ Andrzej Marek Ostruszka
/ _ | | (_) | Instytut Fizyki, Uniwersytet Jagiellonski (Cracow)
/_/ L|_|V|_|\___/ (use ostruszk as a username instead of my initials)
Re: OCaml: Współdzielenie pomiędzy rekordami ...
Author: Andrzej M. Ostruszka
Date: Wed, 04 Dec 2002 09:19
Date: Wed, 04 Dec 2002 09:19
14 lines
1518 bytes
1518 bytes
On Wed, 4 Dec 2002 09:11:51 +0000 (UTC), Andrzej M. Ostruszka wrote:
> Jeżeli mam rekord który zawiera float'y ale nie składa się tylko
> z float'ów więc one sa pudełkowane(?? tak się to mówi ??) to jak zrobić
> tak by dany float był współdzielony pomiędzy różnymi rekordami
> i modyfikacja w jednym była widoczna we wszystkich?
Chciałem tylko dodać, że obejście z zastosowaniem jednoelementowej
tablicy float znam :)
Pozdrawiam
--
____ _ ___
/ | \_/ |/ _ \ Andrzej Marek Ostruszka
/ _ | | (_) | Instytut Fizyki, Uniwersytet Jagiellonski (Cracow)
/_/ L|_|V|_|\___/ (use ostruszk as a username instead of my initials)
Re: OCaml: Wspó³dzielenie pomiêdzy rekordami ...
Author: Nathell
Date: Wed, 04 Dec 2002 09:48
Date: Wed, 04 Dec 2002 09:48
28 lines
1947 bytes
1947 bytes
I dteachtaireacht Wed, 4 Dec 2002 09:19:46 +0000 (UTC) scríobh Andrzej M.
Ostruszka:
> > Je¿eli mam rekord który zawiera float'y ale nie sk³ada siê tylko
> > z float'ów wiêc one sa pude³kowane(?? tak siê to mówi ??) to jak zrobiæ
> > tak by dany float by³ wspó³dzielony pomiêdzy ró¿nymi rekordami
> > i modyfikacja w jednym by³a widoczna we wszystkich?
>
> Chcia³em tylko dodaæ, ¿e obej¶cie z zastosowaniem jednoelementowej
> tablicy float znam :)
A obejscie z zastosowaniem referencji?
#v+
type rekord = {s : string; f : float ref};;
let share = ref 0.0;;
let rec1 = {s = "rec1"; f = share};;
let rec2 = {s = "rec2"; f = share};;
rec1.f := 2.0 *. !(rec1.f) +. 3.1415926535;;
!(rec2.f);;
#v-
hth :-)
--
Nathell [http://www.nhp.prv.pl]
"Don't treat fictional people as if they were human beings. It only
encourages them." -- Aris Katsaris in rec.games.int-fiction
(replace mishrak.ac.thull with zodiac.mimuw.edu.pl to send me email)
Re: OCaml: Współdzielenie pomiędzy rekordami ...
Author: Tomasz Zielonka
Date: Wed, 04 Dec 2002 10:07
Date: Wed, 04 Dec 2002 10:07
17 lines
1509 bytes
1509 bytes
Andrzej M. Ostruszka napisał: > On Wed, 4 Dec 2002 09:11:51 +0000 (UTC), Andrzej M. Ostruszka wrote: >> Jeżeli mam rekord który zawiera float'y ale nie składa się tylko >> z float'ów więc one sa pudełkowane(?? tak się to mówi ??) to jak zrobić >> tak by dany float był współdzielony pomiędzy różnymi rekordami >> i modyfikacja w jednym była widoczna we wszystkich? > > Chciałem tylko dodać, że obejście z zastosowaniem jednoelementowej > tablicy float znam :) Referencja Ci nie wystarczy? pozdr tomek -- .signature: Too many levels of symbolic links
Re: OCaml: Współdzielenie pomiędzy rekordami ...
Author: Andrzej M. Ostruszka
Date: Wed, 04 Dec 2002 10:48
Date: Wed, 04 Dec 2002 10:48
20 lines
1864 bytes
1864 bytes
On Wed, 4 Dec 2002 10:07:40 +0000 (UTC), Tomasz Zielonka wrote:
>> Chciałem tylko dodać, że obejście z zastosowaniem jednoelementowej
>> tablicy float znam :)
>
> Referencja Ci nie wystarczy?
:) Zapomniałem dopisać, że to też znam i wydaje mi się że to jest to
samo obejście jak z tablicą bo mają taką samą reprezentację -- to znaczy
nie wiem dokładnie jak jest z nagłówkami (ktoś chce się pochwalić? -- na
pewno jest tam rozmiar tablicy ale jak jest w przypadku recordu to nie
pamietam) ale same dane są chyba trzymane przez wskaźnik do double. Jak
nie ma innych pomysłów to muszę popatrzyć na kod wynikowy czy to jest
wyoptymalizowane tak jakbym to chciał.
Pozdrawiam
--
____ _ ___
/ | \_/ |/ _ \ Andrzej Marek Ostruszka
/ _ | | (_) | Instytut Fizyki, Uniwersytet Jagiellonski (Cracow)
/_/ L|_|V|_|\___/ (use ostruszk as a username instead of my initials)
Re: OCaml: Współdzielenie pomiędzy rekordami ...
Author: Mariusz K. Grzeca
Date: Wed, 04 Dec 2002 16:57
Date: Wed, 04 Dec 2002 16:57
13 lines
1906 bytes
1906 bytes
On Wed, 4 Dec 2002, Andrzej M. Ostruszka wrote: > > Referencja Ci nie wystarczy? > > :) Zapomniałem dopisać, że to też znam i wydaje mi się że to jest to > samo obejście jak z tablicą bo mają taką samą reprezentację Nie mają. W jednoelementowej tablicy, lub jednoelementowym rekordzie z polem mutable typu float, float będzie unboxowany, a w przypadku referencji nie, więc będziesz miał "dwukrotne" boxowanie. Różnica w wydajności między rozwiązaniem z jednoelementową tablicą, a jednoelementowym rekordem jest (w przypadku kompilowania z -unsafe) żadna, tyle że tablica jest większa :]
Re: OCaml: Współdzielenie pomiędzy rekordami ...
Author: Andrzej M. Ostruszka
Date: Wed, 04 Dec 2002 18:15
Date: Wed, 04 Dec 2002 18:15
18 lines
1962 bytes
1962 bytes
On Wed, 4 Dec 2002 17:57:01 +0100, Mariusz K. Grzeca wrote:
>> :) Zapomniałem dopisać, że to też znam i wydaje mi się że to jest to
>> samo obejście jak z tablicą bo mają taką samą reprezentację
>
> Nie mają. W jednoelementowej tablicy, lub jednoelementowym rekordzie z
> polem mutable typu float, float będzie unboxowany, a w przypadku
> referencji nie, więc będziesz miał "dwukrotne" boxowanie.
Jak ktoś sobie coś ubzdurał to mu ciężko później zrozumieć co piszą
inni. Właśnie miałem na myśli { float } i jak wspomniano o referencjach
to sobie utożsamiłem je zapominając że tam contents jest polimorficzny.
Przepraszam za sianie dezinformacji :).
Pozdrawiam
--
____ _ ___
/ | \_/ |/ _ \ Andrzej Marek Ostruszka
/ _ | | (_) | Instytut Fizyki, Uniwersytet Jagiellonski (Cracow)
/_/ L|_|V|_|\___/ (use ostruszk as a username instead of my initials)
Re: OCaml: Współdzielenie pomiędzy rekordami ...
Author: Marcin 'Qrczak' Kowalczyk
Date: Thu, 05 Dec 2002 09:14
Date: Thu, 05 Dec 2002 09:14
15 lines
1806 bytes
1806 bytes
Wed, 4 Dec 2002 17:57:01 +0100, Mariusz K. Grzeca <mgrzeca@sokrates.mimuw.edu.pl> pisze:
> W jednoelementowej tablicy, lub jednoelementowym rekordzie z polem
> mutable typu float, float będzie unboxowany, a w przypadku referencji
> nie, więc będziesz miał "dwukrotne" boxowanie.
Za to wyciąganie floata z tablicy albo z rekordu floatów wymaga
zaalokowania pudełka - chyba że jest na nim natychmiast wykonywana
operacja, którą kompilator wyoptymalizuje (nie wiem, jak dobry w tym
jest). Więc nie jest oczywiste, co będzie szybsze.
--
__("< Marcin Kowalczyk
\__/ qrczak@knm.org.pl
^^ http://qrnik.knm.org.pl/~qrczak/
Re: OCaml: Współdzielenie pomiędzy rekordami ...
Author: Mariusz K. Grzeca
Date: Thu, 12 Dec 2002 10:57
Date: Thu, 12 Dec 2002 10:57
11 lines
1742 bytes
1742 bytes
Marcin 'Qrczak' Kowalczyk wrote: > Za to wyciąganie floata z tablicy albo z rekordu floatów wymaga > zaalokowania pudełka - chyba że jest na nim natychmiast wykonywana > operacja, którą kompilator wyoptymalizuje (nie wiem, jak dobry w tym > jest). Jest w tym taki sobie... Potrafi złożyć "do kupy" kilka wyrażeń w funkcji i trzymać unboxowane wszystkie wyniki pośrednie. Boxuje dopiero "ostateczny" wynik, albo gdy musi coś przekazać do funkcji, której nie mógł, lub nie chciał inline'ować.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads