"учтите! пример кода что я привел, работает корректно только для int[,]" - извините не понял про какой "кусочек когда" вы говорите в какой то ссылке он был?int[,] и int[][] разные вещи )) могут быть сюрпризы
using System;
using System.Collections.Generic;
namespace size_of_Dictionary
{
class Program
{
static void Main(string[] args)
{
dq();
dp();
}
static void dq() // q - от слова квадратные, все на вскидку, без придирок плз ))
{
var tails = new Dictionary<string, int[,]>();
tails.Add("123456789", new int[,] { { 1, 2, 3 }, { 4, 5, 6 } });
tails.Add("12345", new int[,] { { 1, 2 }, { 3, 4 } });
// 2*4+9*2+6*4+5*2+4*4=8+18+24+10+16=76
long size = tails.Count * 4;
foreach (var pair in tails)
size +=
pair.Key.Length * sizeof(char) +
pair.Value.Length * sizeof(int);
Console.WriteLine(size);
}
static void dp() // p - от слова полиразмерные, зато все корректно, но без внутренностей словаря
{
var tails = new Dictionary<string, int[][]>();
tails.Add("123456789", new int[][] { new int[] { 1, 2, 3, 4 }, new int[] { 5, 6, 7 } });
tails.Add("12345", new int[][] { new int[] { 1, 2, 3 }, new int[] { 4, 5 } });
// 2*4+9*2+7*4+5*2+5*4=8+18+28+10+20=84
long size = tails.Count * 4;
foreach (var pair in tails)
{
size += pair.Key.Length * sizeof(char);
foreach(var arr in pair.Value)
size += arr.Length * sizeof(int);
}
Console.WriteLine(size);
}
}
}
using System.Collections.Generic;
namespace size_of_Dictionary
{
class Program
{
static void Main(string[] args)
{
var tails = new Dictionary<string, int[,]>();
tails.Add("123456789", new int[,] { { 1, 2, 3 }, { 1, 2, 8 } });
tails.Add("12345", new int[,] { { 1, 2 }, { 1, 5 } });
// а сам массив ссылок на пары кто считать будет?
// 4 или 8 зависит от платформы (32/64 бита), и то если компилируется в нативный код
// и напомню, что адресные массивы словарей, списков и тд, выделяются блоками
// размер блока зависит от текущего размера и интенсивности запросов
// так что начальный размер весьма условный
long size = tails.Count * 4;
foreach (var pair in tails)
size +=
pair.Key.Length * sizeof(char) +
pair.Value.Length * sizeof(int);
}
}
}
сочувствую, но вы ни куда не денетесь от аспектов, которые они уже упомянули. возвращаясь к исходному вопросу:
это все таки лучше делать под линукс. я могу понять настороженность (сам полгода потратил на преодоление неприязни + еще 2,5 года на то что бы на все смотреть с ухмылкой (что не означает "профи"! только осознание факта, что решаемо ВСЕ (но чаще всего через гугл)))
мой совет - линукс. проще юбунту, но лучше LTS
можно и на винде, но тогда строго серверная ОСь. в вашем случае (вынь7) это вроде бы win server 2008r2. я бы вообще "закопал стюардессу" (с) см в гугле... но под phpBB 2008r2 достаточно за уши
еще для эрудиции:
- apache (а лучше nginx статика же? но там и динамику можно прикрутить), MySql, Postgree, MongoDB .. все основные киты существуют и дли винды (но все равно лучше пользоваться ими под линуксом)
ну и в завершение - вам неизбежно придется либо нанять специалиста, либо пройти нехилый ликбез. даже если будете пытаться запустить все это под виндой