El Windows de 64 bits usa més RAM?

Això vol dir que el codi compilat per 64 bits fa servir de mitjana dues vegades més RAM de la versió de 32 bits?

D'alguna manera ho dubto, però em pregunto quina és la part real. Suposo que els petits tipus, com curt , byte i char Són la mateixa mida en una arquitectura de 64 bits? No estic segur de byte Però. Tingueu en compte que moltes aplicacions funcionen amb grans cadenes (com navegadors web, etc.)), que consisteix principalment en char Les matrius en la majoria de les implementacions, la part superior pot no ser tan gran.

De manera que encara que els tipus numèrics com intunit description in lists i llarg És més gran el 64 bits, tindria un efecte significatiu en l'ús de la RAM o no?

3 respostes 3

Depèn de l' estil de programació (i del llenguatge, però esteu referint a C).

  • Si treballeu molt amb els punters (o teniu moltes referències en alguns idiomes), el consum RAM puja.
  • Si useu moltes dades amb mida fixa, com ara doble o enter32_ t , el consum de la RAM no puja.
  • Per a tipus com intunit description in lists o llarg , depèn de l' arquitectura; hi pot haver diferències entre Linux i Windows. Aquí Veus les alternatives que tens. En poques paraules, Windows utilitza LLP64, significa que long llarg i els punters són 64 bits, mentre Linux usa LP64, on llarg També n'hi ha 64. Altres arquitectures podrien fer intunit description in lists o fins i tot curt 64 bits més bé, però això és força estrany.

Hi ha unes quantes raons pel consum de memòria per pujar. No obstant això, el més alt de 64b contra 32b depèn d'una aplicació a una altra.

La raó principal és Usar molts punters en el codi . No obstant això, un Matriu assignada dinàmicament en un codi compilat per 64 bits i en execució En un SO 64 bits seria la mateixa mida que la matriu assignada a 32 Un petit sistema. Només l' adreça a la matriu serà més gran, el contingut la mida serà la mateixa ( excepte quan canvia la mida del tipus - De tota manera. Això no hauria de passar i estar ben documentat.

Un altre augment de la petjada hauria de ser degut a Alineament de la memòria . Entrada 64 bits del mode que necessita l' alineació per considerar una adreça de 64 bits per tal que Hauria d'afegir un petit sobre.

Probablement el la mida del codi s' incrementarà . En alguns Les arquitectura de 64 bits ISA podrien ser una mica més grans. I tu també ho faries. Ara hem de fer trucades a adreces de 64 bits.

En executar- se En 64 bits els registres són més grans (64bit) de manera que si useu Hi ha molts tipus numèrics en què el compilador també els podria col·locar Els registres de manera que això no necessàriament haurien de significar que la seva petjada RAM Pujaria. Usar les variables dobles És probable que produeixi una memòria Augment de la petjada si no es desen en els registres 64b.

Quan s' usa Idiomes compilats JIT Com Java, NET és probable que l' augment de la petjada del codi 64b sigui més gran que l' entorn d' execució generarà informació addicional a través de l' ús del punter, estructures de control oculta, etc.

No obstant això, no hi ha cap número màgic que descriu la petjada de la memòria de 64 bits. Això s' ha de mesurar d' una aplicació a una altra. Pel que he vist, Mai vaig obtenir més del 20% d'augment de petjades per a una aplicació que s' executa amb 64 bits, comparat amb 32 bits. No obstant això, això és exclusivament basat en les aplicacions que vaig trobar i estic utilitzant la majoria de C i C++.

Crec que pot haver-hi una altra raó per la qual va de tornada en les variables que s'han de desar en memòria en un límit de 64 bits a una adreça que... xxxxx0 a llegir en una mossegada, si no és necessari llegir-la en un byte en un moment.

Artículos Relacionados:

- Memòria RAM -

Esta web usa cookies, puedes ver la política de cookies, aquí -
Política de cookies +