CHƯƠNG 2 TỔNG QUAN VỀ PHÂN TÍCH CHƯƠNG TRÌNH
4.2.2. Thử nghiệm về nguồn mở
Chúng ta đánh giá cách tiếp cận trên nguồn mở được liệt kê trong Bảng 3.4. Đầu tiên, zip4j là một mã nguồn mở Java cho việc nén và giải nén các tập tin. Chúng tôi giám sát các tính toán của các chức năng này. Trong trường hợp trước đây, nhiều tập tin được thu thập bao gồm văn bản, hình ảnh, v.v. để nén. Kích cỡ các tập tin là từ 10KB đến 50MB. Một tập tin dưới dạng nén có chứa một tập tin duy nhất. Trong trường hợp sau, chúng tôi sử dụng lại tập tin zip đã tạo trong trường hợp trước để đánh giá chức năng giải nén. Thứ hai, JArgs là một bộ dòng lệnh tùy chọn phân tích toàn diện, để sử dụng bởi các lập trình viên Java. Đầu vào chương trình là một chuỗi. Đầu ra chương trình là xét các đối số có được chấp nhận hay không cùng với giá trị của các đối số được chấp nhận. Chúng tôi chuẩn bị kích thước đầu vào lên tới 10.000 ký tự. Thứ ba, thuật toán Ukkonen xây dựng một cấu trúc dữ liệu có tên là cây hậu tố để tìm chuỗi con chung. Chúng tôi chọn một nguồn mở của thuật toán để thực hiện một thử nghiệm. Đầu vào của chương trình là một chuỗi và đầu ra là số lượng các nút và các cạnh trong cây hậu tố. Tương tự như JArgs, chúng tôi chuẩn bị kích thước đầu vào lên đến 10.000 ký tự.
Bảng 4.5. Kết quả thí nghiệm cho nguồn mở
Kết quả thí nghiệm được trình bày trong Bảng 3.5. Kết quả của zip4j mô tả mối quan hệ giữa chi phí tính toán chương trình và kích thước tập tin bằng Kilobyte Kết
quả cho thấy rằng zip4j có chi phí tính toán tuyến tính trong cả hai chức năng, đó là
một hiệu suất đầy hứa hẹn. Với JArgs, hiệu quả của nó cũng được khuyến khích nhờ tính toán tuyến tính. Kết quả của thuật toán Ukkonen cho thấy rằng việc thực hiện thuật toán tuyến tính phù hợp với chiều dài chuỗi. Chi phí tính toán tuyến tính cũng là hiệu suất lý thuyết được đề cập trong phần [19]. So sánh với xu hướng trong phần [6], kết quả ước lượng của hai cách tiếp cận là tương tự nhưng thời gian chạy phương pháp tiếp cận của chúng ta là 2.7 giây trong khi thời gian chạy của xu hướng là 3.7 giờ trong [6]. Lý do chính của sự khác biệt giữa hai phương pháp là cách tiếp cận của chúng ta sử dụng các tiêu chí như trong mục 2.2.2 để xác định khi nào kết quả ước lượng là ổn định và chính xác để dừng việc dự toán. Ngược lại, xu hướng luôn luôn chạy các chương trình với toàn bộ khối lượng công việc và chỉ sử dụng tiêu chí để đánh giá độ chính xác của dự toán với toàn bộ khối lượng công việc.