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