| 1856 | |
| 1857 | |
| 1858 | static ui64 EstimateMemUsageForCatFeature( |
| 1859 | const THashedCatValuesHolder& srcFeature, |
| 1860 | bool storeFeaturesDataAsExternalValuesHolder |
| 1861 | ) { |
| 1862 | ui64 result = 0; |
| 1863 | |
| 1864 | const ui32 nonDefaultObjectCount = GetNonDefaultValuesCount(srcFeature); |
| 1865 | |
| 1866 | constexpr ui32 ESTIMATED_FEATURES_PERFECT_HASH_MAP_NODE_SIZE = 32; |
| 1867 | |
| 1868 | // assuming worst-case that all values will be added to Features Perfect Hash as new. |
| 1869 | result += ESTIMATED_FEATURES_PERFECT_HASH_MAP_NODE_SIZE * nonDefaultObjectCount; |
| 1870 | |
| 1871 | if (!storeFeaturesDataAsExternalValuesHolder) { |
| 1872 | // for storing quantized data |
| 1873 | // TODO(akhropov): support other bitsPerKey. MLTOOLS-2425 |
| 1874 | result += sizeof(ui32) * nonDefaultObjectCount; |
| 1875 | } |
| 1876 | |
| 1877 | return result; |
| 1878 | } |
| 1879 | |
| 1880 | |
| 1881 | static void ProcessCatFeature( |
no test coverage detected