mimalloc C++: पूर्ण गाइड, उदाहरण और उपयोग विधि

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

mimalloc C++ के लिए: हाई-परफॉरमेंस मेमोरी एलोकेटर

आधुनिक C++ डेवलपमेंट में, मेमोरी मैनेजमेंट एक महत्वपूर्ण कार्य है जो एप्लिकेशन के प्रदर्शन को प्रभावित करता है। मानक एलोकेटर (जैसे glibc का malloc या jemalloc) अक्सर मल्टी-थ्रेडेड वातावरण या छोटे ब्लॉक के बार-बार आवंटन/मुक्ति में अच्छा प्रदर्शन नहीं कर पाता। mimalloc ("microsoft mimalloc" का संक्षिप्त रूप) Microsoft Research द्वारा विकसित एक कॉम्पैक्ट लेकिन बेहद तेज़ जनरल-पर्पज एलोकेटर है। यह प्रभावशाली परिणाम दिखाता है: मल्टी-थ्रेडेड परिदृश्यों में malloc से 2-3 गुना तेज़ और काफी कम मेमोरी खपत।

mimalloc का उपयोग क्यों करें? पहला, यह आधुनिक मल्टी-कोर प्रोसेसर के लिए ऑप्टिमाइज़ किया गया है: यह थ्रेड-लोकल कैश का उपयोग करता है और ग्लोबल लॉक के लिए प्रतिस्पर्धा को कम करता है। दूसरा, यह "फ्री लिस्ट शार्डिंग" एल्गोरिदम के माध्यम से मेमोरी फ्रैग्मेंटेशन से प्रभावी ढंग से लड़ता है - फ्री ब्लॉक की सूची को आकार और थ्रेड के अनुसार विभाजित करता है। तीसरा, mimalloc में कुछ प्रकार की कमजोरियों (डबल-फ्री, यूज़-आफ्टर-फ्री) के खिलाफ अंतर्निहित सुरक्षा है और डिबगिंग के लिए "गार्डेड एलोकेशन" का समर्थन करता है। यह इसे हाई-लोड सर्वर, गेम इंजन, डेटाबेस और किसी भी C++ कोड के लिए आदर्श बनाता है जहां मेमोरी के साथ गति महत्वपूर्ण है।

इस लेख में, हम विस्तार से देखेंगे कि mimalloc कैसे स्थापित करें, इसके मुख्य कार्यों का उपयोग कैसे करें, और C++ प्रोजेक्ट्स में एकीकरण के वास्तविक उदाहरण देंगे। आप सीखेंगे कि कोड की एक पंक्ति से मानक malloc को कैसे बदलें और बिजनेस लॉजिक को बदले बिना 30-50% प्रदर्शन लाभ प्राप्त करें।

इंस्टॉलेशन

mimalloc को कई तरीकों से स्थापित किया जा सकता है। अनुशंसित तरीका vcpkg या Conan पैकेज मैनेजर के माध्यम से है, या स्रोत से संकलन करना है।

vcpkg के माध्यम से (Windows/Linux/macOS के लिए अनुशंसित)

# vcpkg स्थापित करें, यदि पहले से नहीं है
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh  # या Windows पर .\bootstrap-vcpkg.bat
./vcpkg integrate install

# mimalloc स्थापित करें
./vcpkg install mimalloc

Conan के माध्यम से

conan install mimalloc/2.1.6@

स्रोत से संकलन (Linux/macOS)

git clone https://github.com/microsoft/mimalloc
cd mimalloc
mkdir -p build && cd build
cmake ..
make -j$(nproc)
sudo make install

CMake प्रोजेक्ट में जोड़ना

find_package(mimalloc REQUIRED)
target_link_libraries(my_target PRIVATE mimalloc::mimalloc)

त्वरित शुरुआत: न्यूनतम कार्यशील उदाहरण

mimalloc का उपयोग शुरू करने का सबसे आसान तरीका मानक malloc/new को इसके संस्करण से बदलना है। इसके लिए, ग्लोबल new/delete ऑपरेटरों को ओवरराइड करना पर्याप्त है।

#include <iostream>
#include <mimalloc.h>
#include <mimalloc-new-delete.h>  // ग्लोबल new/delete को ओवरराइड करता है

int main() {
    // अब सभी new/delete mimalloc का उपयोग करते हैं
    int* arr = new int[1000];
    for (int i = 0; i < 1000; ++i) arr[i] = i;
    std::cout << "योग: " << arr[500] << std::endl;
    delete[] arr;

    // आप सीधे C-फंक्शन का भी उपयोग कर सकते हैं
    void* p = mi_malloc(64);
    mi_free(p);

    return 0;
}

mimalloc से लिंक करके संकलित करें:

g++ -std=c++17 main.cpp -lmimalloc -o test

मुख्य मेथड और फंक्शन

mimalloc C-संगत API (mi_ उपसर्ग वाले फंक्शन) और C++ रैपर दोनों प्रदान करता है। आइए 8 प्रमुख फंक्शन देखें।

1. mi_malloc — मेमोरी आवंटन

सिग्नेचर: void* mi_malloc(size_t size)

कार्य: size बाइट आकार का मेमोरी ब्लॉक आवंटित करता है। मानक malloc का एनालॉग, लेकिन मल्टीथ्रेडिंग के लिए ऑप्टिमाइज़ किया गया।

#                    

अनुशंसाएँ