StringCore – Thư viện COM StringBuffer hiệu năng cao (Free Binary) (2 người xem)

Người dùng đang xem chủ đề này

  • Tôi tuân thủ nội quy khi đăng bài

    phuongnam366377

    Thành viên thường trực
    Tham gia
    25/10/19
    Bài viết
    222
    Được thích
    226
    1/ Ý tưởng từ chủ đề sau


    2/ Tôi + ChatGPT viết nhanh khoãng gần 2 tiếng cho Thư viện sau cơ bản hoàn thành

    3/ ChatGPT viết bài giới thiệu nhanh

    4/ Mai mốt úp lên Github sau ...

    5/ Nội dung sau do ChatGPT biên soạn theo chỉ đạo của Tôi

    StringCore – Thư viện COM StringBuffer hiệu năng cao (Free Binary)​

    StringCore là một COM DLL miễn phí cung cấp lớp StringBuffer — một engine xử lý chuỗi Unicode mutable được thiết kế để hỗ trợ các thao tác chuỗi hiệu năng cao trong VBA, VB6, Delphi và các client Automation khác.
    Thư viện tập trung vào:
    • Xây dựng chuỗi lớn hiệu quả
    • Thay thế ký tự/đoạn chuỗi ở quy mô lớn
    • Phân tách và chuyển đổi thành số nhanh
    • Thao tác in-place (thay đổi trực tiếp trên buffer), tránh tạo chuỗi tạm
    ⚠️ Lưu ý: Đây là binary-only release (chỉ DLL COM). Không kèm mã nguồn.

    Tính năng chính​

    ✍️ Xây dựng & chỉnh sửa chuỗi​

    • Append, AppendChar
    • Insert, Delete
    • Replace, ReplaceInPlace
    • Reverse, Clear
    • EnsureCapacity (cấp phát trước để tối ưu)

    Tìm kiếm & so sánh​

    • IndexOf, LastIndexOf
    • StartsWith, EndsWith, Contains
    • Compare (tuỳ chọn IgnoreCase)

    ✂️ Phân tách và parse nhanh​

    • Split, SplitChar
    • SplitToLongArray
    • SplitCharToLongArray
    • SplitCharToInt64Array

    Hỗ trợ số​

    • AppendInt64Parts
    • AppendInt64Range

    ⚡ Replace siêu nhanh​

    • ReplaceChar – thay ký tự tại vị trí
    • ReplaceInPlace – thay đoạn an toàn, hiệu năng
    • BatchReplaceChars – batch replace nhiều vị trí trong 1 lần gọi

    Hướng dẫn nhanh (VBA)​

    Sau khi đăng ký DLL qua regsvr32, bạn mở Tools → References trong VBA và tick StringCore – High-Performance COM StringBuffer Library, rồi gọi:
    Mã:
    Dim b As New StringBuffer
    b.Append "Hello, "
    b.Append "World!"
    Debug.Print b.Value

    Ví dụ chi tiết​

    Thao tác chuỗi cơ bản​

    Mã:
    Sub Full_Buffer_Test()
    Dim buff As StringBuffer
    Set buff = New StringBuffer
    buff.Append "ABFGH"
    Debug.Print buff.Value
    ' ABFGH
    
    buff.Insert 3, "CDE"
    Debug.Print buff.Value
    ' ABCDEFGH
    
    buff.Reverse
    Debug.Print buff.Value
    ' HGFEDCBA
    
    buff.Replace 2, 2, "XX"
    Debug.Print buff.Value
    ' HXXEDCBA
    
    buff.Reverse
    Debug.Print buff.Value
    ' ABCDEXXH
    
    buff.Delete 6, 2
    Debug.Print buff.Value
    ' ABCDEH
    
    Debug.Print buff.Substring(2, 3)
    ' BCD
    End Sub
    Ví dụ này thể hiện rõ cách StringBuffer thay thế các thao tác xử lý chuỗi phức tạp trong VBA một cách trực quan và hiệu quả.

    ⚡ Batch replace ký tự hàng loạt (siêu nhanh)​

    Mã:
    Sub Test_BatchReplaceChars()
    Dim b As New StringBuffer
    Dim n As Long: n = 1000000
    b.Append String(n, "A")
    
    Dim pos() As Long, ch() As Long
    ReDim pos(1 To n)
    ReDim ch(1 To n)
    
    Dim i As Long
    For i = 1 To n
        pos(i) = i
        ch(i) = Asc("X")
    Next
    
    PerfInit
    Dim t0 As Double: t0 = PerfNow
    
    b.BatchReplaceChars pos, ch
    
    Dim t1 As Double: t1 = PerfNow
    Debug.Print "BatchReplaceChars:"; Format(t1 - t0, "0.000")
    End Sub
    Kết quả thường ~0.001s cho 1.000.000 ký tự — điều mà VBA thuần không thể làm nổi trong thực tế.

    Ghi chú hiệu năng​

    Thao tácStringCoreVBA tương đương
    Xây dựng chuỗi lớnnhanhchậm
    Replace ký tự nhiều lầnnhanh❌ không khả thi
    Batch replace nhiều vị trí⚡ ~0.001s❌ treo
    Split → Long array⚡ nhanhrất chậm
    StringCore thực hiện thao tác trực tiếp trên buffer Unicode UTF-16, tránh copy và tạo chuỗi tạm, vì vậy mang lại hiệu năng vượt trội cho các bài toán text-heavy.

    Ghi chú sử dụng​

    • EnsureCapacity giúp cấp phát trước bộ nhớ nếu bạn xây dựng chuỗi lớn.
    • BatchReplaceChars là hàm quan trọng nhất khi bạn cần cập nhật nhiều vị trí cùng lúc.
    • SplitCharToInt64Array cực nhanh trong việc phân tích dữ liệu số (numeric parsing).

    Cách đăng ký DLL​

    1. Mở Command Prompt (Admin)
    2. Chạy:
    Mã:
    regsvr32 StringCore.dll
    1. Mở VBA (Excel/Access/VB6):
      • Tools → References
      • Chọn StringCore – High-Performance COM StringBuffer Library
    Giờ bạn đã sẵn sàng gọi New StringBuffer trong VBA để xử lý chuỗi hiệu năng cao.


    Hình ảnh nhìn từ VBA như sau

    1769417259612.png
     
    Lần chỉnh sửa cuối:

    Bài viết mới nhất

    Back
    Top Bottom