Maksimum Paralel İplikleri Ayarlama
Büyük hacimlerde barkod okurken, tek iplikli bir işleme güvenmek performans darboğazları yaratabilir ve ölçeklenebilirliği sınırlayabilir. Ancak, paralel iplikler kullanarak, uygulamanızın birden çok görüntüyü eşzamanlı olarak işlemesine olanak tanır, bu da toplam işlem gücünü etkili bir şekilde artırır ve bir grup işi bitirmek için gereken zamanı önemli ölçüde azaltır.
Bu iplikler için maksimum limit belirlemek, performansı optimize etmenin güçlü bir yoludur. İş yükünü işlemci çekirdeklerine dengeli bir şekilde dağıtarak uygulamanın donanımın tüm potansiyelini kullanmasını sağlar. Bu yaklaşım verimliliği en üst düzeye çıkararak uygulamanın düzgün çalışmasını sağlarken mümkün olan en hızlı sonuçları sağlar.
IronBarcode, bu limiti kontrol etmenin basit bir yolunu sunarak, optimal makine performansını sağladığından emin olur. Aşağıdaki bölüm, bu iplik limitlerini kolayca nasıl ayarlayabileceğinizi gösterir.
C# dilinde maksimum paralel ipliklerin nasıl ayarlanacağı
- Barkod okuma için maksimum paralel iplikleri ayarlamak üzere IronBarcode C# kütüphanesini indirin
- Barkodları belirtilen bir klasörden yükleyin
- Yeni bir
BarcodeReaderOptionsnesnesi oluşturun Multithreadedöğesini true olarak ayarlayın veMaxParallelThreadsiçin bir tam sayı girin- Sonuçları
BarcodeResultsile yazdırın ve gösterin
Maksimum Paralel İplikleri Ayarlama
Bu örnek için, büyük bir barkod resimleri seti kullanarak, tek iş parçacıklı yerine çok iş parçacıklı bir işlem kullanmanın ölçeklenebilirliğini ve verimliliğini göstereceğiz. Resim klasörünü buradan indirebilirsiniz.
IronBarcode'u birden fazla iş parçacığı kullanacak şekilde yapılandırmak için, önce BarcodeReaderOptions nesnesi Multithreaded true olarak ayarlanmış şekilde oluşturulur. Daha sonra, MaxParallelThreads özelliği bir tam sayı değeri atanarak ayarlanır. Varsayılan olarak, MaxParallelThreads 4 olarak ayarlanmıştır.
Ayarları yapılandırdıktan sonra, klasörden büyük miktarda barkod görüntüsü içe aktarılır. Daha sonra, bir döngü kullanarak barkod görüntü dizini Read yöntemi kullanılarak, dosya yolu ve yapılandırılmış BarcodeReaderOptions ile okunur. Son olarak, barkod değeri ve türü BarcodeResults erişilerek görüntülenir.
:path=/static-assets/barcode/content-code-examples/how-to/set-max-parallel-thread.cs
using Google.Protobuf.WellKnownTypes;
using IronBarCode;
using System;
using System.IO;
int maxParallelThreads = 4;
var optionsFaster = new BarcodeReaderOptions
{
// Set Max threads to 4
Multithreaded = true,
MaxParallelThreads = maxParallelThreads,
};
// Dynamically get the "images" folder in the current directory
string folderPath = Path.Combine(Directory.GetCurrentDirectory(), "images");
// Retrieve all JPG files in the directory
var pdfFiles = Directory.GetFiles(folderPath, "*.jpg");
foreach (var file in pdfFiles)
{
// Read the barcode
var results = BarcodeReader.Read(file);
foreach (var result in results)
{
// Show the type and value for every barcode found
Console.WriteLine($"Value: {result.Value}, Type: {result.BarcodeType}");
}
}
Imports Google.Protobuf.WellKnownTypes
Imports IronBarCode
Imports System
Imports System.IO
Dim maxParallelThreads As Integer = 4
Dim optionsFaster As New BarcodeReaderOptions With {
.Multithreaded = True,
.MaxParallelThreads = maxParallelThreads
}
' Dynamically get the "images" folder in the current directory
Dim folderPath As String = Path.Combine(Directory.GetCurrentDirectory(), "images")
' Retrieve all JPG files in the directory
Dim pdfFiles = Directory.GetFiles(folderPath, "*.jpg")
For Each file In pdfFiles
' Read the barcode
Dim results = BarcodeReader.Read(file)
For Each result In results
' Show the type and value for every barcode found
Console.WriteLine($"Value: {result.Value}, Type: {result.BarcodeType}")
Next
Next
Çıktı
Konsol çıktısında gösterildiği gibi, her bir ilgili resim için barkod değerini ve türünü gösterir.
Uygun Maksimum Paralel İplik Ayarlama
Multithreaded özelliği true olarak ayarlandığında, MaxParallelThreads özelliği varsayılan olarak 4 olur. MaxParallelThreads için atanan tam sayı için katı bir sınır olmamasına rağmen, değeri donanımınızın mantıksal çekirdek kapasitesinden daha yükseğe ayarlamak performans düşüşüne neden olabilir. Bunun nedeni, işlemcinin aşırı bağlam değişimini işleyememesi, muhtemelen hızdan ziyade overhead ile sonuçlanmasıdır. Bu nedenle, MaxParallelThreads için doğru değer bilgisayarın teknik özelliklerine bağlıdır ve geliştiriciler, ortamları için en iyi değeri bulmak için test yapmalıdır.
Bu örnekte, yukarıdaki aynı çok iş parçacıklı senaryoyu gösterirken, 4 varsayılan değeri ile tüm kullanılabilir iş parçacıklarını kullanmak için Environment.ProcessorCount karşılaştırmak üzere bir zamanlayıcı kullanacağız. Bizim durumumuzda, 32 mantıksal işlemciye sahip bir bilgisayar kullanıyoruz, bu nedenle MaxParallelThreads 32 olarak ayarlanacaktır.
:path=/static-assets/barcode/content-code-examples/how-to/set-max-parallel-thread-performance.cs
using IronBarCode;
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
// Set the max parallel threads to the number of processor cores
int maxParallelThreads = Environment.ProcessorCount;
var optionsFaster = new BarcodeReaderOptions
{
// Set Max threads to the number of processor cores
Multithreaded = true,
MaxParallelThreads = maxParallelThreads,
ExpectMultipleBarcodes = true,
};
// Start timing the process
var stopwatch = Stopwatch.StartNew();
// Dynamically get the "images" folder in the current directory
string folderPath = Path.Combine(Directory.GetCurrentDirectory(), "images");
// Check if directory exists to prevent crashes
if (!Directory.Exists(folderPath))
{
Console.WriteLine($"Error: The directory '{folderPath}' does not exist.");
return;
}
// Get all JPG files in the directory
var pdfFiles = Directory.GetFiles(folderPath, "*.jpg");
foreach (var file in pdfFiles)
{
// Read the barcode
var results = BarcodeReader.Read(file);
if (results.Any())
{
Console.WriteLine($"Barcode(s) found in: {Path.GetFileName(file)}");
foreach (var result in results)
{
Console.WriteLine($" Value: {result.Value}, Type: {result.BarcodeType}");
}
}
}
stopwatch.Stop();
// Print number of images the barcode reader could decode
Console.WriteLine($" Max parallel threads of {maxParallelThreads} with {stopwatch.Elapsed.TotalSeconds:F2}s");
Imports IronBarCode
Imports System
Imports System.Diagnostics
Imports System.IO
Imports System.Linq
' Set the max parallel threads to the number of processor cores
Dim maxParallelThreads As Integer = Environment.ProcessorCount
Dim optionsFaster As New BarcodeReaderOptions With {
.Multithreaded = True,
.MaxParallelThreads = maxParallelThreads,
.ExpectMultipleBarcodes = True
}
' Start timing the process
Dim stopwatch As Stopwatch = Stopwatch.StartNew()
' Dynamically get the "images" folder in the current directory
Dim folderPath As String = Path.Combine(Directory.GetCurrentDirectory(), "images")
' Check if directory exists to prevent crashes
If Not Directory.Exists(folderPath) Then
Console.WriteLine($"Error: The directory '{folderPath}' does not exist.")
Return
End If
' Get all JPG files in the directory
Dim pdfFiles As String() = Directory.GetFiles(folderPath, "*.jpg")
For Each file As String In pdfFiles
' Read the barcode
Dim results = BarcodeReader.Read(file)
If results.Any() Then
Console.WriteLine($"Barcode(s) found in: {Path.GetFileName(file)}")
For Each result In results
Console.WriteLine($" Value: {result.Value}, Type: {result.BarcodeType}")
Next
End If
Next
stopwatch.Stop()
' Print number of images the barcode reader could decode
Console.WriteLine($" Max parallel threads of {maxParallelThreads} with {stopwatch.Elapsed.TotalSeconds:F2}s")
Çıktı
4 İplik ile İşlem Süresi
Bu işlem için işlem süresi 84 saniyedir.
Ortam İşlemci Sayısı ile İşlem Süresi
Gördüğünüz gibi, bu işlem için işlem süresi 53 saniyedir, bu da onu yalnızca dört iş parçacığı ile çalıştırmaktan önemli ölçüde daha hızlıdır. Ancak, lütfen daha fazla iplik kullanmanın iyileştirilmiş performans garantisi vermediğini unutmayın, çünkü bu durum barındırıcı işlemciye bağlıdır. Genel bir kural olarak, diğer sistem işlemleri için hala kullanılabilir bir tek iplik kalmasını sağlamak için mevcut işlemcilerin en yüksek sayısından bir eksik olanı kullanmak en iyisi olabilir.
Multithreaded true olarak ayarlamak ve MaxParallelThreads artırmak işlem hızını iyileştirmeyecektir ve aslında azaltabilir.
Sıkça Sorulan Sorular
IronBarcode'da maksimum paralel iş parçacıkları ayarlamanın amacı nedir?
Maksimum paralel iş parçacıkları ayarlamak, özellikle çoğu barkodu toplu olarak işlerken sistem kaynaklarını verimli kullanarak barkod üretim performansını optimize etmenizi sağlar.
IronBarcode'da maksimum paralel iş parçacıkları nasıl yapılandırılır?
IronBarcode'da maksimum paralel iş parçacıkları, C# kodunuzda uygun yöntemi kullanarak barkod üretim görevleri için istenen iş parçacığı sayısını ayarlayarak yapılandırılabilir.
Toplu barkod oluşturma için performansı optimize etmek neden önemlidir?
Toplu barkod oluşturma için performansı optimize etmek, işlemin verimli ve hızlı olmasını, büyük miktarda barkod üretmek için gereken süre ve kaynakları azaltmayı sağlar, bu da yüksek getirili uygulamaların gereksinimleri için esastır.
IronBarcode'da paralel işlemenin faydaları nelerdir?
IronBarcode'da paralel işlem kullanımı, birden fazla CPU çekirdeğini iş için kullanarak barkod üretimini hızlandırır, bu da büyük ölçekli barkod görevleri için uygulama performansını iyileştirir ve işlem süresini azaltır.
Çok fazla paralel iş parçacığı ayarlamak performansı olumsuz etkileyebilir mi?
Evet, çok fazla paralel iş parçacığı ayarlamak kaynak çekişmesine ve fazla yüklenmeye yol açabilir, potansiyel olarak performansı düşürebilir. Sistem yeteneklerine uygun dengeli bir yapılandırma bulmak önemlidir.
Paralel iş parçacığı sayısını seçerken hangi faktörler dikkate alınmalıdır?
Dikkate alınmalıdır: kullanılabilir CPU çekirdeklerin sayısı, sistem yükü ve barkod üretim görevlerinizin doğası. Farklı ayarlar deneyerek en iyi yapılandırmayı bulmak en iyisidir.
IronBarcode'da paralel iş parçacıkları için varsayılan bir ayar var mı?
IronBarcode, paralel is parçacıkları için varsayılan bir ayara sahip olabilir, ancak en iyi performansı elde etmek için bu ayarı belirli uygulama ihtiyaçlarınıza göre özelleştirmeniz önerilir.
IronBarcode, iş parçacığı yönetimini nasıl ele alır?
IronBarcode, .NET'in iş parçacığı yeteneklerinden yararlanarak paralel işlemeyi yönetir ve geliştiricilerin performansı etkili bir şekilde optimize etmek için iş parçacığı sayısını belirtmelerine olanak tanır.
Çalışma sırasında paralel iş parçacığı sayısını dinamik olarak değiştirebilir miyim?
Çalışma sırasında paralel iş parçacığı sayısını dinamik olarak değiştirmek önerilmeyebilir çünkü bu tutarsızlıklara neden olabilir ve performans kararlılığını etkileyebilir. Barkod oluşturma işlemine başlamadan önce yapılandırmayı ayarlamak en iyisidir.
Barkod oluşturma işleminde maksimum paralel iş parçacıklarını ayarlamak için bazı yaygın kullanım durumları nelerdir?
Yaygın kullanım durumları arasında envanter yönetim sistemleri, perakende satış noktası sistemleri ve büyük miktarlarda barkod işlemenin önemli olduğu lojistik uygulamaları gibi yüksek hızda barkod oluşturmayı gerektiren uygulamalar bulunmaktadır.

