Компактная структура данных для хранения большого набора целочисленных значений

Я работаю над приложением, которое должно передавать большие наборы значений Int32 . Ожидается, что наборы будут содержать ~ 1 000 000–50 000 000 элементов, где каждый элемент является ключом базы данных в диапазоне 0–50 000 000 . Я ожидаю, что распределение идентификаторов в любом заданном наборе будет эффективно случайным в этом диапазоне. Операции, которые мне нужны с набором, очень просты:

  • Добавить новое значение
  • Перебрать все значения.

Существует серьезное беспокойство по поводу использования памяти этими наборами, поэтому я ищу структура данных, которая может хранить идентификаторы более эффективно, чем простой List или HashSet . Я просмотрел BitArray , но это может быть расточительным в зависимости от того, насколько редки идентификаторы. Я также рассмотрел побитовое дерево , но я не уверен, как вычислить эффективность использования пространства этого решения для ожидаемых данных. Фильтр Блума был бы замечательным, если бы я только мог терпеть ложные отрицания.

Я был бы признателен за любые предложения структур данных, подходящих для этой цели. Меня интересуют как готовые, так и индивидуальные решения.

РЕДАКТИРОВАТЬ : Чтобы ответить на ваши вопросы:

  • Нет, элементы не нужно сортировать
  • По "пройти" вокруг "Я имею в виду, что оба метода передаются между методами и сериализуются и отправляются по сети. Я явно должен был упомянуть об этом.
  • В памяти может быть сразу приличное количество этих наборов (~ 100). но js не вводится. что я сделал: страница: <% @ Page Language = "C #" AutoEventWireup = "true" CodeBehind = "Default.aspx.cs" Inherits = "...

    Я пытаюсь внедрить js на страницу (в теги) с помощью ihttpmodule. но js не вводится.

    что я сделал:

    страница:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="MyTempProject._Default" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>Temp</title>   
    </head>
    <body>
        <form id="form1">
        <div>
    
        </div>
        </form>
    </body>
    </html>
    

    модуль ihttp:

    public class MyExtensionModule : IHttpModule
        {
            #region IHttpModule Members
    
            public void Dispose()
            {
    
            }
    
            public void Init(HttpApplication context)
            {
    
                context.BeginRequest += new EventHandler(context_BeginRequest);            
            }
    
    
    
    
            void context_BeginRequest(object sender, EventArgs e)
            {
                HttpContext context = ((HttpApplication)sender).Context;
                Page page = HttpContext.Current.CurrentHandler as Page;
                if (page != null)
                {
                    string script = "/Scripts/jquery-1.5.1.js";
                    if (page.Header != null)
                    {
                        string scriptTag = String.Format("<script language=\"javascript\" type=\"text/javascript\" src=\"{0}\"></script>\n", script); page.Header.Controls.Add(new LiteralControl(scriptTag));
                    }
                    else if (!page.ClientScript.IsClientScriptIncludeRegistered(page.GetType(), script)) page.ClientScript.RegisterClientScriptInclude(page.GetType(), script, script);
                }
    
    
            }
    
            #endregion
        }
    
7
задан David Michaeli 8 March 2011 в 23:26
поделиться