Altbilgi içeriğine atla
.NET YARDıM

C# Kronometre (Geliştiriciler İçin Nasıl Çalışır)

Programlama dillerinin geniş sahasında, C# masaüstünden web ve mobil uygulamalara kadar geniş bir uygulama yelpazesi geliştirmek için kullanılan çok yönlü ve güçlü bir dil olarak öne çıkar. C#'ın geliştiriciler arasında favori olmasını sağlayan temel özelliklerden biri, çeşitli programlama zorluklarına çözüm sunan zengin kütüphane ve sınıf setidir. Bu sınıflardan biri olan Stopwatch sınıfı, kesin zaman ölçümü, profil oluşturma ve performans analizi alanında özel bir yere sahiptir.

Bu makalede, kamuya açık TimeSpan Elapsed özelliğini kullanarak belirli bir görevi gerçekleştirmek için geçen süreyi bulmak için C#'taki Stopwatch nesnesini nasıl kullanacağımızı göreceğiz. Ayrıca, C# Geliştiricileri için IronPDF kullanarak PDF oluşturma için ölçülen toplam geçen süreyi zamanlayacağız.

1. Stopwatch Sınıfı Nedir?

Stopwatch sınıfı, C#'de System.Diagnostics ad alanının bir parçasıdır ve yüksek hassasiyetle geçen zamanı ölçmek için basit ve verimli bir yol sağlar. .NET Framework ile tanıtılmıştır ve kod bölümlerinin yürütme süresini izleme, performansı optimize etme ve uygulamaları profile alma konusunda geliştiriciler için değerli bir araç olmuştur.

2. Başlatma ve Temel Kullanım

Stopwatch sınıfını kullanmak oldukça basittir. Kullanmaya başlamak için ilk olarak Stopwatch sınıfının yeni bir örneğini oluşturmanız gerekir:

using System.Diagnostics;

class Program
{
    static void Main()
    {
        // Create a new stopwatch instance for timing operations
        Stopwatch stopwatch = new Stopwatch();
    }
}
using System.Diagnostics;

class Program
{
    static void Main()
    {
        // Create a new stopwatch instance for timing operations
        Stopwatch stopwatch = new Stopwatch();
    }
}
Imports System.Diagnostics

Friend Class Program
	Shared Sub Main()
		' Create a new stopwatch instance for timing operations
		Dim stopwatch As New Stopwatch()
	End Sub
End Class
$vbLabelText   $csharpLabel

Stopwatch örneği oluşturulduktan sonra, zamanı ölçmek için kronometreyi başlatıp durdurabilirsiniz:

using System;

class Program
{
    static void Main()
    {
        Stopwatch stopwatch = new Stopwatch();

        // Start timing
        stopwatch.Start();
        Console.WriteLine("It will measure the time between start and stop");

        // Stop timing
        stopwatch.Stop();
    }
}
using System;

class Program
{
    static void Main()
    {
        Stopwatch stopwatch = new Stopwatch();

        // Start timing
        stopwatch.Start();
        Console.WriteLine("It will measure the time between start and stop");

        // Stop timing
        stopwatch.Stop();
    }
}
Imports System

Friend Class Program
	Shared Sub Main()
		Dim stopwatch As New Stopwatch()

		' Start timing
		stopwatch.Start()
		Console.WriteLine("It will measure the time between start and stop")

		' Stop timing
		stopwatch.Stop()
	End Sub
End Class
$vbLabelText   $csharpLabel

Geçen zaman Elapsed özelliği kullanılarak elde edilebilir:

using System;

class Program
{
    static void Main()
    {
        Stopwatch stopwatch = new Stopwatch();
        stopwatch.Start();

        // Simulate some work by sleeping for 2 seconds
        System.Threading.Thread.Sleep(2000);

        // Stop timing
        stopwatch.Stop();

        // Fetch the elapsed time
        TimeSpan elapsed = stopwatch.Elapsed;
        Console.WriteLine($"Elapsed time: {elapsed}");
    }
}
using System;

class Program
{
    static void Main()
    {
        Stopwatch stopwatch = new Stopwatch();
        stopwatch.Start();

        // Simulate some work by sleeping for 2 seconds
        System.Threading.Thread.Sleep(2000);

        // Stop timing
        stopwatch.Stop();

        // Fetch the elapsed time
        TimeSpan elapsed = stopwatch.Elapsed;
        Console.WriteLine($"Elapsed time: {elapsed}");
    }
}
Imports System

Friend Class Program
	Shared Sub Main()
		Dim stopwatch As New Stopwatch()
		stopwatch.Start()

		' Simulate some work by sleeping for 2 seconds
		System.Threading.Thread.Sleep(2000)

		' Stop timing
		stopwatch.Stop()

		' Fetch the elapsed time
		Dim elapsed As TimeSpan = stopwatch.Elapsed
		Console.WriteLine($"Elapsed time: {elapsed}")
	End Sub
End Class
$vbLabelText   $csharpLabel

Çıktı:

C# Stopwatch (Geliştiriciler İçin Nasıl Çalışır): Şekil 1 - Sistem Zamanlayıcı Çıkışı

3. Stopwatch'ın Gelişmiş Özellikleri

Stopwatch sınıfı, temel zaman ölçümünün ötesinde birkaç gelişmiş özellik sunar. Bu özelliklerin bazılarına bir göz atalım:

3.1. Yeniden Başlat Yöntemi

Restart yöntemi, geçen zamanı sıfırlayıp durdurmak için tek bir işlemde kullanışlı bir yol sunar. Bu, yeni bir Stopwatch örneği oluşturmadan birden fazla kod parçasının çalışma süresini ölçerken faydalı olabilir.

using System;

class Program
{
    static void Main()
    {
        Stopwatch stopwatch = new Stopwatch();

        // Start timing
        stopwatch.Start();
        Console.WriteLine("The time will restart after executing the below code");

        // Restart timing
        stopwatch.Restart();

        // Simulate work
        System.Threading.Thread.Sleep(1000);

        // Stop timing
        stopwatch.Stop();

        // Fetch the elapsed time after restart
        TimeSpan elapsed = stopwatch.Elapsed;
        Console.WriteLine($"Total Elapsed time after Restart: {elapsed}");
    }
}
using System;

class Program
{
    static void Main()
    {
        Stopwatch stopwatch = new Stopwatch();

        // Start timing
        stopwatch.Start();
        Console.WriteLine("The time will restart after executing the below code");

        // Restart timing
        stopwatch.Restart();

        // Simulate work
        System.Threading.Thread.Sleep(1000);

        // Stop timing
        stopwatch.Stop();

        // Fetch the elapsed time after restart
        TimeSpan elapsed = stopwatch.Elapsed;
        Console.WriteLine($"Total Elapsed time after Restart: {elapsed}");
    }
}
Imports System

Friend Class Program
	Shared Sub Main()
		Dim stopwatch As New Stopwatch()

		' Start timing
		stopwatch.Start()
		Console.WriteLine("The time will restart after executing the below code")

		' Restart timing
		stopwatch.Restart()

		' Simulate work
		System.Threading.Thread.Sleep(1000)

		' Stop timing
		stopwatch.Stop()

		' Fetch the elapsed time after restart
		Dim elapsed As TimeSpan = stopwatch.Elapsed
		Console.WriteLine($"Total Elapsed time after Restart: {elapsed}")
	End Sub
End Class
$vbLabelText   $csharpLabel

Çıktı:

C# Stopwatch (Geliştiriciler İçin Nasıl Çalışır): Şekil 2 - Yeniden Başlatma Çıkışı

3.2. IsHighResolution Özelliği

IsHighResolution özelliği, geçen zamanı doğru bir şekilde ölçmek için yüksek çözünürlüklü bir performans sayacına dayalı olup olmadığını gösterir. Bu özelliği kontrol etmek, yüksek çözünürlüklü zamanlama yöntemlerini desteklemeyen sistemlerle çalışırken faydalı olabilir.

using System;

class Program
{
    static void Main()
    {
        if (Stopwatch.IsHighResolution)
        {
            Console.WriteLine("High-resolution timing is supported");
        }
        else
        {
            Console.WriteLine("Fallback to lower-resolution timing");
        }
    }
}
using System;

class Program
{
    static void Main()
    {
        if (Stopwatch.IsHighResolution)
        {
            Console.WriteLine("High-resolution timing is supported");
        }
        else
        {
            Console.WriteLine("Fallback to lower-resolution timing");
        }
    }
}
Imports System

Friend Class Program
	Shared Sub Main()
		If Stopwatch.IsHighResolution Then
			Console.WriteLine("High-resolution timing is supported")
		Else
			Console.WriteLine("Fallback to lower-resolution timing")
		End If
	End Sub
End Class
$vbLabelText   $csharpLabel

Çıktı:

C# Stopwatch (Geliştiriciler İçin Nasıl Çalışır): Şekil 3 - Yüksek Çözünürlüklü Zamanlama Çıkışı

3.3. Sıklık Özelliği

Frequency özelliği, temel timer'ın saniyedeki tik frekansını döndürür. Bu değer, geçen tıklamaları milisaniye gibi diğer zaman birimlerine dönüştürmek için faydalıdır.

using System;

class Program
{
    static void Main()
    {
        long frequency = Stopwatch.Frequency;
        Console.WriteLine($"Timer Frequency: {frequency} ticks per second");
    }
}
using System;

class Program
{
    static void Main()
    {
        long frequency = Stopwatch.Frequency;
        Console.WriteLine($"Timer Frequency: {frequency} ticks per second");
    }
}
Imports System

Friend Class Program
	Shared Sub Main()
		Dim frequency As Long = Stopwatch.Frequency
		Console.WriteLine($"Timer Frequency: {frequency} ticks per second")
	End Sub
End Class
$vbLabelText   $csharpLabel

Çıktı:

C# Stopwatch (Geliştiriciler İçin Nasıl Çalışır): Şekil 4 - Frekans Çıkışı

3.4. Geçen Tıklamalar Özelliği

ElapsedTicks özelliği, ham tik sayısına zaman birimlerine dönüştürmeden doğrudan erişim sağlar. Bu, özel hesaplamalar yaparken veya düşük seviyeli zamanlama gereksinimleriyle uğraşırken faydalı olabilir.

using System;

class Program
{
    static void Main()
    {
        Stopwatch stopwatch = new Stopwatch();
        stopwatch.Start();

        // Simulate some work
        System.Threading.Thread.Sleep(1500);

        // Stop timing
        stopwatch.Stop();

        // Fetch the elapsed ticks
        long elapsedTicks = stopwatch.ElapsedTicks;
        Console.WriteLine($"Elapsed Ticks: {elapsedTicks}");
    }
}
using System;

class Program
{
    static void Main()
    {
        Stopwatch stopwatch = new Stopwatch();
        stopwatch.Start();

        // Simulate some work
        System.Threading.Thread.Sleep(1500);

        // Stop timing
        stopwatch.Stop();

        // Fetch the elapsed ticks
        long elapsedTicks = stopwatch.ElapsedTicks;
        Console.WriteLine($"Elapsed Ticks: {elapsedTicks}");
    }
}
Imports System

Friend Class Program
	Shared Sub Main()
		Dim stopwatch As New Stopwatch()
		stopwatch.Start()

		' Simulate some work
		System.Threading.Thread.Sleep(1500)

		' Stop timing
		stopwatch.Stop()

		' Fetch the elapsed ticks
		Dim elapsedTicks As Long = stopwatch.ElapsedTicks
		Console.WriteLine($"Elapsed Ticks: {elapsedTicks}")
	End Sub
End Class
$vbLabelText   $csharpLabel

Çıktı:

C# Stopwatch (Geliştiriciler İçin Nasıl Çalışır): Şekil 5 - Geçen Tiklerin Çıkışı

4. Introduction to IronPDF in C

IronPDF, geliştiricilerin .NET uygulamalarında rahatlıkla PDF belgeleri oluşturmasına, manipüle etmesine ve işlemesine olanak tanıyan güçlü bir C# kütüphanesidir. HTML, resimler veya diğer formatlardan PDF'ler üretmeniz gereksinimi ne olursa olsun, IronPDF, C# projelerinize sorunsuz entegrasyon için kapsamlı bir araç seti sunar.

IronPDF, HTML'yi PDF'ye dönüştürme kabiliyetiyle, tasarımları ve stilleri bozulmadan koruma olanağı sunar. Bu özellik, web içeriğinden, raporlar, faturalar veya belgeler oluşturmak için idealdir. HTML dosyalarını, URL'leri ve HTML dizelerini PDF dosyalarına dönüştürebilirsiniz.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        // Initialize the PDF renderer
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        // Initialize the PDF renderer
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Initialize the PDF renderer
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

4.1. Installation of IronPDF in C

C# uygulamanızda IronPDF kullanmaya başlamak için bu basit adımları izleyin:

  1. NuGet Paket Yöneticisi: C# projenizi Visual Studio'da açın ve Paket Yöneticisi Konsolu'na gidin. IronPDF'i kurmak için şu komutu çalıştırın:

    Install-Package IronPdf

    Alternatif olarak, "IronPDF" paketini indirmek ve yüklemek için IronPDF NuGet Paket Sayfasını kullanabilirsiniz.

  2. Kodda Referans: Başarılı kurulumdan sonra, C# kodunuzda IronPDF'e bir referans ekleyin:

    using IronPdf;
    using IronPdf;
    Imports IronPdf
    $vbLabelText   $csharpLabel

    Artık IronPDF'in özelliklerinden faydalanmaya hazır olabilirsiniz.

4.2. URL'den PDF Oluşturma Zamanlamak İçin C# Stopwatch Kullanımı

Şimdi, IronPDF kullanarak bir URL'den bir PDF oluşturmak için geçen süreyi ölçmek amacıyla C#'ın Stopwatch sınıfını nasıl kullanacağımızı gösterelim:

using System;
using System.Diagnostics;
using IronPdf;

class Program
{
    static void Main()
    {
        // Initialize IronPDF Renderer
        IronPdf.HtmlToPdf Renderer = new IronPdf.HtmlToPdf();

        // Specify the URL for PDF generation
        string urlToConvert = "https://example.com";

        // Use Stopwatch to measure the time taken
        Stopwatch stopwatch = new Stopwatch();
        stopwatch.Start();

        // Create PDF from URL
        PdfDocument PDF = Renderer.RenderUrlAsPdf(urlToConvert);

        // Stop measuring elapsed time
        stopwatch.Stop();

        // Save the generated PDF to a file
        PDF.SaveAs("GeneratedPDF.pdf");

        // Display the time taken
        Console.WriteLine($"Time taken to create PDF from URL: {stopwatch.ElapsedMilliseconds} milliseconds");
    }
}
using System;
using System.Diagnostics;
using IronPdf;

class Program
{
    static void Main()
    {
        // Initialize IronPDF Renderer
        IronPdf.HtmlToPdf Renderer = new IronPdf.HtmlToPdf();

        // Specify the URL for PDF generation
        string urlToConvert = "https://example.com";

        // Use Stopwatch to measure the time taken
        Stopwatch stopwatch = new Stopwatch();
        stopwatch.Start();

        // Create PDF from URL
        PdfDocument PDF = Renderer.RenderUrlAsPdf(urlToConvert);

        // Stop measuring elapsed time
        stopwatch.Stop();

        // Save the generated PDF to a file
        PDF.SaveAs("GeneratedPDF.pdf");

        // Display the time taken
        Console.WriteLine($"Time taken to create PDF from URL: {stopwatch.ElapsedMilliseconds} milliseconds");
    }
}
Imports System
Imports System.Diagnostics
Imports IronPdf

Friend Class Program
	Shared Sub Main()
		' Initialize IronPDF Renderer
		Dim Renderer As New IronPdf.HtmlToPdf()

		' Specify the URL for PDF generation
		Dim urlToConvert As String = "https://example.com"

		' Use Stopwatch to measure the time taken
		Dim stopwatch As New Stopwatch()
		stopwatch.Start()

		' Create PDF from URL
		Dim PDF As PdfDocument = Renderer.RenderUrlAsPdf(urlToConvert)

		' Stop measuring elapsed time
		stopwatch.Stop()

		' Save the generated PDF to a file
		PDF.SaveAs("GeneratedPDF.pdf")

		' Display the time taken
		Console.WriteLine($"Time taken to create PDF from URL: {stopwatch.ElapsedMilliseconds} milliseconds")
	End Sub
End Class
$vbLabelText   $csharpLabel

Bu örnek, IronPDF'yi başlatır, belirtilen bir URL'den bir PDF oluşturan HtmlToPdf sınıfını kullanır ve Stopwatch ile geçen süreyi ölçer. İstediğiniz URL ile urlToConvert değişkenini ayarlayın ve uygulamanız için ihtiyaç duyduğunuz şekilde PDF oluşturma sürecini daha da özelleştirebilirsiniz.

Çıktı:

C# Stopwatch (Geliştiriciler İçin Nasıl Çalışır): Şekil 6 - PDF Oluşturma Zamanlayıcı Çıkışı

5. Sonuç

Sonuç olarak, C#'deki Stopwatch sınıfı, doğru zaman ölçümü ve performans analizi için önemli bir araç olarak durur ve geliştiricilere kodu optimize etme ve operasyonel verimliliği değerlendirme araçları sunar. Kullanıcı dostu arayüzü ve gelişmiş özellikleri çeşitli zamanlama gereksinimleri için onu çok yönlü hale getirir. Buna ek olarak, C# projelerine IronPDF entegrasyonu, dilin PDF belge manipülasyonu yeteneklerini genişleterek, PDF'leri oluşturma, değiştirme ve işleme için sorunsuz bir çözüm sunar.

IronPDF ile bir URL'den bir PDF oluşturarak geçen süreyi ölçmek için Stopwatch kullanımının gösterildiği örnek, kesin zaman takibi ile gelişmiş kütüphaneler arasındaki etkileşimi sergileyerek, uygulama performansını değerlendirmede titiz zamanlamanın önemini vurgular. Birlikte, C#'ın Stopwatch ve IronPDF, geliştiricilere titiz zamanlama ve çok yönlü PDF işleme yetenekleriyle yüksek performanslı uygulamalar oluşturma yetkisi verir.

IronPDF işlevselliğini test etmek için ücretsiz deneme lisansınızı almak üzere IronPDF Lisanslama Bilgi Sayfasıni ziyaret edin. URL alımını PDF dönüşümü hakkında tüm öğreticiye IronPDF URL alımı PDF Öğreticisinden ulaşabilirsiniz.

Sıkça Sorulan Sorular

Stopwatch sınıfı, C# uygulama performansını optimize etme konusunda nasıl yardımcı olur?

C# içindeki Stopwatch sınıfı, geliştiricilerin kod yürütüm süresini yüksek hassasiyetle ölçmelerine sağlar. Geçen süreyi izleyerek, geliştiriciler performans sıkışmalarını belirleyebilir ve daha iyi verimlilik için kodları optimize edebilirler.

C# geliştiricileri için Stopwatch sınıfının sunduğu ileri özellikler nelerdir?

Stopwatch sınıfı, zamanı sıfırlayıp yeni baştan başlatmak için Restart metodu, sistem zamanlama hassasiyetini kontrol etme için IsHighResolution, zamanlama sıklığı için Frequency ve ayrıntılı zaman ölçümü için ElapsedTicks gibi ileri özellikler sunar.

Stopwatch sınıfı tüm sistemlerde yüksek çözünürlüklü zamanlama için kullanılabilir mi?

Stopwatch sınıfı, sistemin donanımı sağlarsa yüksek çözünürlüklü zamanlamayı destekler. Geliştiriciler, sistemlerinin yüksek çözünürlüklü zamanlamaya izin verip vermediğini belirlemek için IsHighResolution özelliğini kontrol edebilirler.

C# uygulamasında HTML içeriklerini PDF'e nasıl dönüştürebilirim?

IronPDF'i kullanarak HTML içeriklerini C# uygulamasında PDF'e dönüştürebilirsiniz. IronPDF, HTML'nin düzen ve stil bütünlüğünü koruyarak raporlar ve faturalar gibi yüksek kaliteli PDF belgeler oluşturmayı uygun hale getirir.

Stopwatch'ı C# içindeki PDF oluşturma işlemiyle nasıl entegre edebilirim?

Stopwatch'ı PDF oluşturma ile entegre etmek için, IronPDF ile PDF oluşturma sürecine başlamadan önce Stopwatch'ı başlatın. PDF oluşturulduktan sonra, Stopwatch'ı durdurarak tüm sürecin ne kadar sürdüğünü ölçün.

Visual Studio C# projesinde PDF kütüphanesi nasıl kurulur?

Visual Studio'da, IronPDF'i NuGet Paket Yöneticisi kullanarak kurabilirsiniz. Paket yöneticisi konsolunda Install-Package IronPdf komutunu çalıştırın ve kodunuza using IronPdf; ekleyerek işlevlerine erişin.

Stopwatch sınıfı, C#'ta performans ayarlama için neden gereklidir?

Stopwatch sınıfı, hassas zamanlama yetenekleri sunarak geliştiricilere kod yürütüm süresini ölçme ve analiz etme olanağı sağladığı için performans ayarlama için gereklidir. Bu bilgi, yavaş işlemleri belirlemek ve uygulama performansını iyileştirmek için çok önemlidir.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara