Toon posts:

[.net 2.0]shared memory

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi, ik ben bezig met een applicatie en mij idee is het volgende:
Er wordt een xml-bestand ingelezen waaruit objecten worden opgebouwdt(parent-childs). Deze objecten zijn immutable. Nu lijkt het me het mooist als alle webapplicatie deze objecten rechtsstreeks kunnen benaderen, als ik er structs van maak moet het helemaal zo snel als een tierelier gaan. Maar wat is de handigste oplossing hiervoor?


Edit: ik heb al wat gevonden denk ik
http://www.codeproject.com/aspnet/VbNetMemoryMappedCache.asp

[ Voor 11% gewijzigd door Verwijderd op 06-09-2006 20:30 . Reden: http://www.codeproject.com/aspnet/VbNetMemoryMappedCache.asp ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 14-02 12:34

gorgi_19

Kruimeltjes zijn weer op :9

:? In de HttpRuntime.Cache stoppen? Een object static maken?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

als je er structs van maakt maak je ze helemaal traag.

structs zijn by-value en worden dus telkens volledig gekopieerd.
classes zijn by-ref en krijg je dus telkens een referentie mee.

Maak dit dus gewoon een immutable class.
(structs zijn enkel snel wanneer ze klein zijn afaik)

ASSUME makes an ASS out of U and ME


  • whoami
  • Registratie: December 2000
  • Laatst online: 14-02 20:35
Mja, alloceren en de-alloceren van een value type (struct) is 'goedkoper' dan het alloceren / dealloceren van een reference type.

Echter, als je een struct in een Cache stopt, zoals gorgi_19 aanraadt, dan denk ik dat die struct geboxed zal worden, wat dan wel weer duur is.
Je hebt ook gelijk dat, als je een struct doorgeeft als argument, dat dan ook weer minder performant is dan een reference type door te geven. Dit geldt ook voor assignements.

Er wordt aangeraden om een struct te gebruiken als je instance klein is (max 16bytes), en als ze short-lived moeten zijn. Hier zou ik - denk ik - ook voor een class kiezen.

https://fgheysels.github.io/


Verwijderd

Topicstarter
doe maar even niet (C) materiaal posten ;) los van het feit dat het weinig toevoegt en dat het veeeeeel te veel was en dan ook nog eens in het Englandisch

[ Voor 111% gewijzigd door RobIII op 07-09-2006 01:40 ]


Verwijderd

Topicstarter
Maar ik wou dus readonly objecten delen tussen meerdere webapplicaties

Verwijderd

Verwijderd schreef op woensdag 06 september 2006 @ 22:22:
In C++, all parameters and return values were passed by value.
That just isn't true... ever heard about pointers? Ever knew that C++ has a new operator that does heap allocation and returns a pointer?

Verwijderd

Topicstarter
Ja, maarre dat stukje was een inleiding. Ik heb dit gecopy/paste uit Effective C#: 50 Specific Ways to Improve Your C#
By Bill Wagner

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 23:54
Verwijderd schreef op woensdag 06 september 2006 @ 23:26:
That just isn't true... ever heard about pointers? Ever knew that C++ has a new operator that does heap allocation and returns a pointer?
pointers worden ook by value doorgegeven en gereturned :)

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Verwijderd

farlane schreef op woensdag 06 september 2006 @ 23:48:
[...]

pointers worden ook by value doorgegeven en gereturned :)
Haha, natuurlijk maar je bedoeld eigenlijk: ze -kunnen- bij value doorgegeven en gereturned worden. Je kan optioneel ook een pointer by-reference doorgeven. Dit is een concept wat bijvoorbeeld vrij weinig Java mensen kunnen bevatten :)

In C++ kun je een object:
stack alloceren en by-value doorgeven
stack alloceren en by-reference doorgeven
stack alloceren en een pointer er naar by-value doorgeven (dwz, de pointer zelf is de value)
stack alloceren en een pointer er naar by-reference doorgeven
heap alloceren en een pointer er naar by-value doorgeven
heap alloceren en een pointer en naar by-reference doorgeven

Omdat C++ zowel de "Adress-of" operator kent als "pass by-reference" is in dit geval pass by-reference eigenlijk syntax sugar voor de pointer to poiner (**) in C.

  • whoami
  • Registratie: December 2000
  • Laatst online: 14-02 20:35
Eh, wat is de bedoeling van die lap engelse tekst ? Ik zie er niet echt toegevoegde waarde in, daarbij is het hier een NL forum

https://fgheysels.github.io/


Verwijderd

Verwijderd schreef op woensdag 06 september 2006 @ 23:45:
Ja, maarre dat stukje was een inleiding. Ik heb dit gecopy/paste uit Effective C#: 50 Specific Ways to Improve Your C#
By Bill Wagner
Was wel handig geweest om dat erbij te vermelden.
Enne... heb je Bill Wagner gevraagd of je dit op dit forum mocht posten? Copyright issues en zo.

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

gorgi_19 schreef op woensdag 06 september 2006 @ 21:26:
:? In de HttpRuntime.Cache stoppen? Een object static maken?
^^ met Gorgi, netste oplossing IMHO

Nu met Land Rover Series 3 en Defender 90


Verwijderd

MTWZZ schreef op donderdag 07 september 2006 @ 08:30:
[...]


^^ met Gorgi, netste oplossing IMHO
Ik denk dat de HttpRuntime.Cache (application scope) in dit geval de beste oplossing is. Kwa static class zou ik alternatief voor een factory pattern gaan: de functionaliteit van de classen waar het om gaat zelf niet static maken, maar alleen 1 class gebruik met een static functie om instances van de classes waar het eigenlijk om gaat terug te geven. In jouw singleton geval is elke instantie dan dezelfde.

Op die manier kun je later, als 1 stukje code opeens private instances nodig heeft gewoon een 2de simpele factory maken die van de exact zelfde classes een andere instantie terug geeft.
Pagina: 1