Bastardoperaatori Päevaraamat

blog.tr.ee

3/6/2009

Mäluallokatsioon Kreeka moodi ehk: “64 MBytes ought to be enough for everyone”

Filed under: Kogutud Lollused, Nutt ja Hala — offf @ 5:36 pm

/../


#define THIRTY_TWO_BYTES (32)
#define SIXTY_FOUR_BYTES (64)
#define TWO_HUNDREND_FIFTY_SIX_BYTES (256)
#define FIVE_HUNDREND_TWELVE_BYTES (512)
#define ONE_KILOBYTE    1024            /*1024*/
#define FOUR_KILOBYTES (4*1024)
       /* 4 KB   */
#define SIXTEEN_KILOBYTES (4*FOUR_KILOBYTES)            /*
16 KB  */
#define SIXTY_FOUR_KILOBYTES (16*FOUR_KILOBYTES)        /*
64 KB */
#define TWO_FIFTY_SIX_KILOBYTES (64*FOUR_KILOBYTES)     /*
256 KB */
#define HALF_MEGABYTE (128*FOUR_KILOBYTES)
   /* 512 KB */
#define FOUR_MEGABYTES (1024*FOUR_KILOBYTES)            /* 4
MB   */
#define SIXTEEN_MEGABYTES (4096*FOUR_KILOBYTES)         /*
16 MB   */
#define THIRTY_TWO_MEGABYTES (8192*FOUR_KILOBYTES)  /* 32 MB
 */
#define SIXTY_FOUR_MEGABYTES (2*THIRTY_TWO_MEGABYTES)  /* 64
MB  */
/../
long block_size(long size_requested)
{
        long result = 0;


log_entry(E_WARNINGS_LOG, "ECN_LIBMEM_CAT:0003: in libmem:block_size"); if (size_requested <= THIRTY_TWO_BYTES) { result = THIRTY_TWO_BYTES; } else if (size_requested <= SIXTY_FOUR_BYTES) { result = SIXTY_FOUR_BYTES; } else if (size_requested <= TWO_HUNDREND_FIFTY_SIX_BYTES) { result = TWO_HUNDREND_FIFTY_SIX_BYTES; } else if (size_requested <= FIVE_HUNDREND_TWELVE_BYTES) { result = FIVE_HUNDREND_TWELVE_BYTES; } else if (size_requested <= ONE_KILOBYTE) { result = ONE_KILOBYTE; } else if (size_requested <= FOUR_KILOBYTES) { result = FOUR_KILOBYTES; } else if ((size_requested > FOUR_KILOBYTES) && (size_requested <= SIXTEEN_KILOBYTES)) { result = SIXTEEN_KILOBYTES; } else if ((size_requested > SIXTEEN_KILOBYTES) && (size_requested <= SIXTY_FOUR_KILOBYTES)) { result = SIXTY_FOUR_KILOBYTES; } else if ((size_requested > SIXTY_FOUR_KILOBYTES) && (size_requested <= TWO_FIFTY_SIX_KILOBYTES)) { result = TWO_FIFTY_SIX_KILOBYTES; } else if ((size_requested > TWO_FIFTY_SIX_KILOBYTES) && (size_requested <= HALF_MEGABYTE)) { result = HALF_MEGABYTE; } else if ((size_requested > HALF_MEGABYTE) && (size_requested <= FOUR_MEGABYTES)) { result = FOUR_MEGABYTES; } else if ((size_requested > FOUR_MEGABYTES) && (size_requested <= SIXTEEN_MEGABYTES)) else if ((size_requested > SIXTEEN_MEGABYTES) && (size_requested <= THIRTY_TWO_MEGABYTES)) { result = THIRTY_TWO_MEGABYTES; } else if ((size_requested > THIRTY_TWO_MEGABYTES) && (size_requested <= SIXTY_FOUR_MEGABYTES)) { result = SIXTY_FOUR_MEGABYTES; } else { log_entry(E_WARNINGS_LOG, "ECN_LIBMEM_CAT:0003: Memory size requested %d exceeded \ maximum pre-defined block size. Allocating memory requested.", size_requested); result = size_requested; } log_entry(E_WARNINGS_LOG, "ECN_LIBMEM_CAT:0003: in libmem:block_size returning %d", result);

return result; }

See koodilõik pärineb absoluutselt elutähtsa enterprais sõnumirouteri sortsust. Nimetatud sõnumirouteri on valmistanud üks Kreekamaa tarkvarafirma, üle-Euroopalise vähempakkumiskonkursi võitja. Kood on kasutusel enamiku Euroopa Liidu riikide tolliasutustes.

No Comments

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress