- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - phát hiện rò rỉ bộ nhớ Ruby/Ruby on Rails
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我想知道 StringBuilder,我有一个问题希望社区能够解释。
让我们忘掉代码的可读性,哪些是nhanh hơn,为什么?
StringBuilder.Append
:StringBuilder sb = new StringBuilder();
sb.Append(string1);
sb.Append("----");
sb.Append(string2);
StringBuilder.AppendFormat
:StringBuilder sb = new StringBuilder();
sb.AppendFormat("{0}----{1}",string1,string2);
câu trả lời hay nhất
不好说,不知道string1
Vàstring2
的大小。
通过调用 ThêmĐịnh dạng
,它将根据格式字符串的长度和将要插入的字符串预分配一次缓冲区,然后连接所有内容并将其插入缓冲区。对于非常大的字符串,这将优于单独调用 Append
这可能会导致缓冲区多次扩展。
但是,对 Append
的三个调用可能会也可能不会触发缓冲区的增长,并且每次调用都会执行该检查。如果字符串足够小并且没有触发缓冲区扩展,那么它将比调用 ThêmĐịnh dạng
更快,因为它不必解析格式字符串来确定在何处进行替换。
需要更多数据才能得出明确的答案
应该注意的是,很少讨论使用静态 Concat
method on the Sợi dây
lớp học (Jon's answer sử dụng AppendWithCapacity
让我想起了这一点)。他的测试结果表明这是最好的情况(假设您不必利用特定的格式说明符)。 String.Concat
做同样的事情,因为它会预先确定要连接的字符串的长度并预分配缓冲区(由于通过参数循环构造,开销会稍微多一些)。它的性能将与 Jon 的 AppendWithCapacity
方法相媲美。
或者,只是简单的加法运算符,因为无论如何它都会编译为对 String.Concat
的调用,但需要注意的是所有加法都在同一个表达式中:
// One call to String.Concat.
string result = a + b + c;
不
// Two calls to String.Concat.
string result = a + b;
result = result + c;
对于所有提交测试代码的人
您需要在单独 运行中运行您的测试用例(或者至少,在单独测试运行的测量之间执行 GC)。这样做的原因是如果你说,1,000,000 次运行,创建一个新的 StringBuilder
在一个测试循环的每次迭代中,然后运行下一个循环相同次数的测试,创建 额外 1,000,000 个 StringBuilder
实例,GC 将更多而不是在第二次测试期间介入并阻碍其时机。
关于c# - StringBuilder.Append 与 StringBuilder.AppendFormat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/710504/
#include sử dụng không gian tên std; lớp C{ riêng tư: int giá trị; công khai: C(){ giá trị = 0;
Câu hỏi này đã có câu trả lời: Sự khác biệt giữa char a[] = ?string?; và char *p = ?string?;? (8 câu trả lời) Đã đóng
đóng cửa. Câu hỏi này yêu cầu chi tiết hoặc rõ ràng. Câu trả lời không được chấp nhận vào thời điểm này. Bạn muốn cải thiện câu hỏi này? Thêm chi tiết và làm rõ câu hỏi bằng cách chỉnh sửa bài đăng này Đã đóng 7 năm trước. Bài đăng này đã được 8 tháng rồi
Ngoài việc gỡ lỗi, có công cụ kiểm tra nào cho c, c++ hoặc c# hoạt động giống như các hàm độc lập dán sao chép vào một số hộp văn bản rồi nhập tham số vào các hộp văn bản khác không? Câu trả lời hay nhất Có lẽ bạn sẽ xem xét thử nghiệm đơn vị. Tôi khuyên bạn nên kiểm tra google và google mô phỏng
Tôi muốn di chuyển một cửa sổ (HWND) trong màn hình thứ hai. Vấn đề là tôi đã thử rất nhiều cách như tăng gấp đôi độ phân giải hoặc nhập giá trị âm, nhưng nó không bao giờ đặt cửa sổ trên màn hình thứ hai của tôi. Mọi manh mối về cách thực hiện việc này trong C/C++/C# sẽ hữu ích nhất
Tôi đang tìm kiếm các triển khai hiện có của các loại DES khác nhau trong C/C++/C##. Nền tảng đang chạy của tôi là Windows XP/Vista/7. Tôi đang cố gắng viết chương trình C# sẽ sử dụng thuật toán DES để mã hóa và giải mã. Tôi cần một số thực tế
Thật khó để nói những gì để hỏi ở đây. Câu hỏi không rõ ràng, mơ hồ, không đầy đủ, quá rộng hoặc hùng biện và không thể trả lời hợp lý ở dạng hiện tại. Để được trợ giúp làm rõ vấn đề này để có thể mở lại, hãy truy cập trung tâm trợ giúp Đóng 1.
Có cách nào để buộc một cửa sổ khác ở trên cùng không? Không phải cửa sổ của ứng dụng mà là một cửa sổ khác đang chạy trên hệ thống. (Windows, C/C++/C#) Câu trả lời hay nhấtSetWindowPos(that_window_ha
Giả sử bạn có lựa chọn giữa C/C++ hoặc Csharp và bạn dự định chạy nhiều phiên bản của cùng một máy chủ trên máy chủ Windows và Linux, đâu là lựa chọn thông minh nhất để xây dựng một ứng dụng máy chủ socket? Câu trả lời tốt nhất là như
Bạn có thể cho tôi biết sự khác biệt giữa chúng? Nhân tiện, có thứ gì được gọi là thư viện C++ hay thư viện C không? Câu trả lời hay nhất Thư viện chuẩn C++ và thư viện chuẩn C là các thư viện được xác định theo tiêu chuẩn C++ và C và được cung cấp để các chương trình C++ và C sử dụng. Đó là điểm chung của những từ đó
Trong mã kiểm tra bên dưới, tôi đưa thông tin đầu ra vào phần bình luận. Tôi đang sử dụng gcc 4.8.5 và Centos 7.2. #include #include lớp C { công khai:
Thật khó để nói những gì đang được hỏi ở đây. Câu hỏi mơ hồ, mơ hồ, không đầy đủ, quá rộng hoặc hùng biện và không thể trả lời hợp lý ở dạng hiện tại. Để được trợ giúp làm rõ vấn đề này để bạn có thể mở lại, hãy truy cập trung tâm trợ giúp. Đã đóng
Khách hàng của tôi sẽ sử dụng cấu trúc/lớp được gọi là thông báo để liên lạc với khách hàng. Tôi nghĩ tôi sẽ viết máy chủ bằng C++. Sẽ có nhiều lớp khác nhau kế thừa thông báo. Vấn đề của tôi là gửi các lớp này qua mạng tới máy khách. Tôi nghĩ có lẽ tôi nên sử dụng
Tôi có hàm sau trong C#: public Matrix ConcatDescriptors(IList> descriptors) { int cols = descriptors[0].Co
Tôi có một dự án mà tôi phải viết một hàm để thực hiện một số thao tác nhất định trên một số dữ liệu. Tôi có thể viết mã bằng C/C++, nhưng tôi không muốn chia sẻ mã của chức năng này với chủ nhân của mình. Thay vào đó, tôi chỉ muốn anh ấy có quyền gọi hàm bằng mã của riêng mình. Có thể được không? Tôi đã nghĩ đến hai phương pháp này - trong
Tôi đang sử dụng API của bên thứ 3 (C/C++) được viết kém. Tôi đang sử dụng nó từ mã được quản lý (C++/CLI). Đôi khi xảy ra "Lỗi vi phạm quyền truy cập". Điều này làm hỏng toàn bộ ứng dụng. Tôi biết tôi không thể xử lý những lỗi này [nếu con trỏ truy cập vào vị trí bộ nhớ không hợp lệ, v.v.
đóng cửa. Câu hỏi này không tuân thủ các nguyên tắc của Stack Overflow. Hiện tại nó không chấp nhận câu trả lời. Chúng tôi không cho phép các câu hỏi tìm kiếm đề xuất về sách, công cụ, thư viện phần mềm, v.v. Bạn có thể chỉnh sửa câu hỏi của mình để trả lời bằng sự kiện và trích dẫn. Đóng cửa 7 năm trước
Đã đóng cửa. Câu hỏi này không tuân thủ nguyên tắc Stack Overflow. Câu trả lời không được chấp nhận vào thời điểm này. Các câu hỏi yêu cầu chúng tôi giới thiệu hoặc tìm các công cụ, thư viện hoặc tài nguyên bên ngoài trang web yêu thích đều không có chủ đề đối với Stack Overflow vì
Tôi có một số mã C sẽ được gọi từ C# bằng P/Invoke. Tôi đang cố gắng xác định tương đương C# cho hàm C này. SomeData* DoSomething(); struct SomeData {
Câu hỏi này đã có câu trả lời: Tại sao các cấu trúc này sử dụng hành vi không xác định trước và sau tăng? (14 câu trả lời) Đã đóng 6
Tôi là một lập trình viên xuất sắc, rất giỏi!