ExactReallocateOnly

Cache.ExactReallocateOnly property

Получает или задает значение, указывающее, должно ли перераспределение быть точным или нет. Если перераспределение не точное, производительность должна быть выше.

public static bool ExactReallocateOnly { get; set; }

Стоимость имущества

истинный если перераспределение точное; в противном случае,ЛОЖЬ .

Примечания

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

Примеры

Этот пример демонстрирует использование Aspose.Imaging.Cache.

[C#]

// По умолчанию папка кеша устанавливается в локальный временный каталог пользователя.
// Вы также можете указать другую папку кеша, отличную от стандартной, например:
// Cache.CacheFolder = @"D:\\MyTemp";

// Автоматический режим гибок и эффективен
Aspose.Imaging.Cache.CacheType = Aspose.Imaging.CacheType.Auto;

// Значение по умолчанию равно 0, что означает отсутствие верхнего предела
Aspose.Imaging.Cache.MaxDiskSpaceForCache = 1073741824; // 1 гигабайт
Aspose.Imaging.Cache.MaxMemoryForCache = 1073741824; // 1 гигабайт

// Не рекомендуется изменять следующее свойство, так как это может сильно повлиять на производительность
Aspose.Imaging.Cache.ExactReallocateOnly = false;

// В любой момент вы можете проверить, сколько байт в данный момент выделено для памяти или диска 
// кешируем, изучая следующие свойства
long l1 = Aspose.Imaging.Cache.AllocatedDiskBytesCount;
long l2 = Aspose.Imaging.Cache.AllocatedMemoryBytesCount;

// Выполняем некоторую обработку изображения, как показано ниже
Aspose.Imaging.ImageOptions.GifOptions options = new Aspose.Imaging.ImageOptions.GifOptions();
options.Palette = new ColorPalette(new Aspose.Imaging.Color[] { Aspose.Imaging.Color.Red, Aspose.Imaging.Color.Blue, Aspose.Imaging.Color.Black, Aspose.Imaging.Color.White });
options.Source = new Aspose.Imaging.Sources.StreamSource(new System.IO.MemoryStream(), true);
using (Aspose.Imaging.RasterImage image = (Aspose.Imaging.RasterImage)Aspose.Imaging.Image.Create(options, 100, 100))
{
    Aspose.Imaging.Color[] pixels = new Aspose.Imaging.Color[10000];
    for (int i = 0; i < pixels.Length; i++)
    {
        pixels[i] = Aspose.Imaging.Color.White;
    }

    image.SavePixels(image.Bounds, pixels);

    // после выполнения кода выше будет выделено 40000 байт в памяти.
    long diskBytes = Aspose.Imaging.Cache.AllocatedDiskBytesCount;
    long memoryBytes = Aspose.Imaging.Cache.AllocatedMemoryBytesCount;
}

// Свойства выделения можно использовать для проверки правильности размещения всех объектов Aspose.Imaging.
// Если вы забыли вызвать dispose для какого-либо объекта, значения кеша будут отличаться от 0.            
l1 = Aspose.Imaging.Cache.AllocatedDiskBytesCount;
l2 = Aspose.Imaging.Cache.AllocatedMemoryBytesCount;

Смотрите также