Guava লাইব্রেরির Stopwatch ক্লাস একটি অত্যন্ত কার্যকরী টুল যা আপনার কোডের পারফরম্যান্স পরিমাপ করতে সাহায্য করে। এটি সাধারণত টেম্পোরাল ডিউরেশন বা নির্দিষ্ট সময়সীমার মধ্যে একটি প্রক্রিয়ার কাজ সম্পন্ন হওয়ার সময় পরিমাপ করার জন্য ব্যবহৃত হয়। Stopwatch ক্লাসটি গাণিতিক সময় পরিমাপের জন্য ব্যবহৃত হয়, বিশেষ করে যেখানে সময় সংক্রান্ত ডেটার মূল্যায়ন প্রয়োজন।
এটি বিশেষভাবে পারফরম্যান্স অপটিমাইজেশন এবং ডিবাগিং-এর ক্ষেত্রে কাজে আসে, যেখানে বিভিন্ন অংশের কাজের সময় পরিমাপ করা দরকার হয়।
Stopwatch ক্লাসের মূল বৈশিষ্ট্য
- স্পিড ট্র্যাকিং: আপনি যখন একটি নির্দিষ্ট কোড ব্লক রান করবেন, তখন কত সময় তা নিতে পারে তা ট্র্যাক করতে পারবেন।
- স্টপওয়াচ স্টার্ট, স্টপ, রিস্টার্ট: সময় মাপার জন্য সোজা এবং সরল API প্রদান করে যা কোডে ইন্টিগ্রেট করা সহজ।
- ফরম্যাটেড আউটপুট: সময়ের আউটপুটকে সুনির্দিষ্টভাবে দেখতে পারবেন যেমন মিলিসেকেন্ড, সেকেন্ড বা মিনিট আকারে।
Stopwatch ব্যবহার করার পদ্ধতি
Guava লাইব্রেরির Stopwatch ক্লাস ব্যবহার করতে হলে আপনাকে com.google.common.base.Stopwatch ইমপোর্ট করতে হবে।
উদাহরণ: Stopwatch ব্যবহার করে কোড পারফরম্যান্স মাপা
ধরা যাক, আপনার একটি সিমুলেশন রয়েছে যেখানে কিছু লিস্টের উপাদান সরানো হচ্ছে এবং আপনি এর জন্য সময় পরিমাপ করতে চান।
import com.google.common.base.Stopwatch;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
public class StopwatchExample {
public static void main(String[] args) {
// Stopwatch তৈরি করা
Stopwatch stopwatch = Stopwatch.createStarted();
// একটি বড় লিস্ট তৈরি করা
List<Integer> list = new ArrayList<>();
for (int i = 0; i < 1000000; i++) {
list.add(i);
}
// লিস্টের প্রথম 500000 উপাদান সরানো
for (int i = 0; i < 500000; i++) {
list.remove(0);
}
// Stopwatch থামানো
stopwatch.stop();
// ফলাফল আউটপুট করা
System.out.println("Time taken: " + stopwatch.elapsed(TimeUnit.MILLISECONDS) + " milliseconds");
}
}
কোডের ব্যাখ্যা
- Stopwatch.createStarted(): এটি একটি নতুন Stopwatch তৈরি করে এবং সেটি অবিলম্বে শুরু করে।
- List Creation: একটি বড় লিস্ট তৈরি করা হয়েছে যেখানে এক মিলিয়ন (১,০০,০০,০০০) সংখ্যা যোগ করা হয়েছে।
- Removing Elements: প্রথম ৫০০,০০০ উপাদান লিস্ট থেকে সরানো হয়েছে।
- stopwatch.stop(): প্রক্রিয়া শেষ হলে,
stop()মেথডের মাধ্যমে স্টপওয়াচ থামানো হয়। - elapsed(TimeUnit.MILLISECONDS): সময় মাপার জন্য,
elapsed()মেথড ব্যবহার করা হয়, যা সময়ের পরিমাপ মিলিসেকেন্ডে প্রদান করে।
আউটপুট:
Time taken: 1503 milliseconds
এখানে, কোডটি লিস্ট থেকে ৫০০,০০০ উপাদান সরাতে কত সময় নিয়েছে তা মাপা হয়েছে।
Stopwatch এর অন্যান্য ফিচার
1. Restarting a Stopwatch (স্টপওয়াচ রিস্টার্ট করা)
আপনি যদি একাধিক বার স্টপওয়াচ ব্যবহার করতে চান, তবে stopwatch.reset() বা stopwatch.start() মেথড ব্যবহার করে এটি পুনরায় শুরু করতে পারেন।
// Stopwatch রিস্টার্ট করা
stopwatch.reset();
stopwatch.start();
// আবার একটি কাজ করা
stopwatch.stop();
System.out.println("Elapsed Time after reset: " + stopwatch.elapsed(TimeUnit.SECONDS) + " seconds");
2. ফরম্যাটেড আউটপুট (Formatted Output)
Stopwatch ক্লাস সময় পরিমাপের ফলাফলকে নির্দিষ্ট টাইম ইউনিটে কনভার্ট করে আউটপুট প্রদান করতে পারে।
// মাইক্রোসেকেন্ডে সময় পরিমাপ করা
System.out.println("Elapsed Time: " + stopwatch.elapsed(TimeUnit.MICROSECONDS) + " microseconds");
// সেকেন্ডে সময় পরিমাপ করা
System.out.println("Elapsed Time: " + stopwatch.elapsed(TimeUnit.SECONDS) + " seconds");
3. Multiple Timings (একাধিক সময় ট্র্যাক করা)
একাধিক ব্লক এক্সিকিউশনের সময় পরিমাপ করার জন্য একাধিক Stopwatch ব্যবহার করা যায়।
Stopwatch stopwatch1 = Stopwatch.createStarted();
// কিছু কাজ
stopwatch1.stop();
Stopwatch stopwatch2 = Stopwatch.createStarted();
// অন্য কাজ
stopwatch2.stop();
System.out.println("Task 1 time: " + stopwatch1.elapsed(TimeUnit.MILLISECONDS) + " ms");
System.out.println("Task 2 time: " + stopwatch2.elapsed(TimeUnit.MILLISECONDS) + " ms");
সারাংশ
Guava এর Stopwatch ক্লাস পারফরম্যান্স মাপার জন্য একটি অত্যন্ত কার্যকরী এবং সহজ পদ্ধতি প্রদান করে। এটি ব্যবহারকারীকে কোডের অংশের কার্যক্ষমতা পরিমাপ করতে সহায়তা করে, যা পারফরম্যান্স অপটিমাইজেশন এবং ডিবাগিং প্রক্রিয়ায় সহায়ক। Stopwatch এর সাহায্যে আপনি খুব সহজেই কোডের বিভিন্ন অংশের কার্যক্ষমতা নির্ধারণ করতে পারেন, যা বড় অ্যাপ্লিকেশনগুলির উন্নয়নে গুরুত্বপূর্ণ ভূমিকা পালন করে।
Read more