Commit Graph

1264 Commits

Author SHA1 Message Date
levlam
59d4248efb Add voluntary spin lock for logging to reduce conflicts with stderr. 2022-11-14 14:34:31 +03:00
levlam
97f14fb6a9 Fix remove_emoji_modifiers. 2022-11-11 22:20:38 +03:00
levlam
8b4bc80860 Fix AsyncFileLog building without threads. 2022-11-09 14:48:14 +03:00
levlam
ab14065168 Improve fatal error handling in AsyncFileLog. 2022-11-07 14:59:18 +03:00
levlam
d1afd1c3b7 Minor improvements. 2022-11-02 19:51:41 +03:00
levlam
e11804b5b0 Don't truncate logs after rotation. 2022-11-01 14:13:14 +03:00
levlam
8c694cd3d3 Improve TimedStat value after long pause. 2022-11-01 14:03:20 +03:00
levlam
a3baecab16 Improve field names. 2022-10-27 13:06:12 +03:00
levlam
6319862890 Improve some emplace_back/push_back usage. 2022-10-27 12:53:53 +03:00
levlam
dcc928419f Fix parse_url_query test. 2022-10-26 09:13:42 +03:00
levlam
60f094bdf2 Move ConcurrentHashMap test out of namespace td. 2022-10-21 13:18:58 +03:00
levlam
5217a86e0d Support redirect_stderr in AsyncFileLog. 2022-10-15 10:17:42 +03:00
levlam
ee28a37906 Minor improvements. 2022-10-12 15:59:58 +03:00
levlam
683627a350 Make all operator bool const and nonexcept. 2022-10-09 19:30:18 +03:00
levlam
7f5f6e41ad Minor improvements. 2022-10-09 19:00:14 +03:00
levlam
5a29dcd337 Avoid redundant usages of Status::error(). 2022-10-09 14:15:54 +03:00
levlam
78ba8fa983 Add AsyncFileLog. 2022-10-09 13:04:57 +03:00
levlam
f12b2f5efe Fix warning. 2022-10-08 20:54:58 +03:00
levlam
4af5c4f5dd Add logging for slow logging to file. 2022-10-05 23:55:50 +03:00
levlam
67aa7082d6 Add thread.get_id() test. 2022-10-04 23:00:02 +03:00
levlam
e984706622 Add td:🧵:get_id(). 2022-10-04 22:48:55 +03:00
levlam
628b8901bc Optimize logging to NULL on Windows. Fixes #2112.
It is possible to do only about 100 writes to NULL per second, which is about 8-80 times less than even performance of writes to a console app.
2022-10-03 15:11:23 +03:00
levlam
10680fe353 Minor improvements. 2022-10-03 14:39:20 +03:00
levlam
8f0ffd0a65 Reduce MAX_STORAGE_SIZE for wait free hash tables to reduce split_storage time. 2022-09-30 16:38:11 +03:00
levlam
ee04923ce1 Add lazy initialization for keyword_stickers_map_. 2022-09-27 16:16:36 +03:00
levlam
66dca9a510 Update emoji to 15.0. 2022-09-27 14:28:08 +03:00
levlam
99a2ffdcec Update Unicode tables to 15.0. 2022-09-27 14:22:30 +03:00
levlam
4a6e0aea43 Add utf8_prepare_search_string. 2022-09-27 14:16:09 +03:00
levlam
b3e16c5dd7 Use the same template recursively for instant view links. 2022-09-26 19:24:39 +03:00
levlam
faa738d6a9 Keep only Slice overload of utf8_utf16_substr. 2022-09-22 12:08:34 +03:00
levlam
5c5d19e76f Increase 8 times number of WaitFreeMap storages. 2022-09-22 07:13:17 +03:00
levlam
b6db8a66ec Remove dangerous Timestamp::store. 2022-09-21 14:25:31 +03:00
levlam
275ee280d2 Use thread-local EVP_MD_CTX in OpenSSL 3.0. 2022-09-19 18:17:51 +03:00
levlam
cb70993b90 Fix buggy behavior of pthread_setaffinity_np/pthread_getaffinity_np on NetBSD. 2022-09-17 23:25:42 +03:00
levlam
e37f3c17af Fix warnings. 2022-09-17 22:54:21 +03:00
levlam
9bf5d57851 Add TD_HAVE_THREAD_AFFINITY macros. 2022-09-17 21:58:00 +03:00
levlam
b8abc6c19e Support CPU affinity on NetBSD. 2022-09-17 21:48:16 +03:00
levlam
b47fce0d95 Support CPU affinity on FreeBSD. 2022-09-17 14:45:42 +03:00
levlam
9d5c151a3f Use DWORD as thread::id on Windows. 2022-09-17 13:21:04 +03:00
levlam
0cc3fb0e9d Include pthread.h on OpenBSD for pthread_t definition. 2022-09-17 01:37:05 +03:00
levlam
0025c4164b Add internalLinkTypeInstantView. 2022-09-16 01:30:54 +03:00
levlam
b49b669ac1 Support affinity mask on Linux. 2022-09-14 15:33:16 +03:00
levlam
0eddd8d405 Add thread::set_affinity_mask/get_affinity_mask. 2022-09-14 14:38:14 +03:00
levlam
5f98548e02 Use STL thread only on Windows. 2022-09-14 14:19:09 +03:00
levlam
273ae92a14 Use HANDLE as thread id on Windows. 2022-09-14 14:18:42 +03:00
levlam
03db53281c Remove this_thread::yield for TD_THREAD_UNSUPPORTED. 2022-09-14 14:10:33 +03:00
levlam
ce9175a00b Always use "must be non-empty". 2022-09-10 22:48:34 +03:00
levlam
9fc136976c Remove ChainBufferWriter::init. 2022-09-06 12:42:00 +03:00
levlam
17bb58d8bb Improve NetBSD build instructions. 2022-09-04 17:50:03 +03:00
levlam
ba2c071324 Use explicit EVP_CIPHER_fetch with OpenSSL 3.0, because EVP_aes_* fetch algorithm each time and are extremely slow in OpenSSL 3.0. 2022-08-29 21:16:12 +03:00
levlam
5e87cae73d Remove unused Evp::init parameter. 2022-08-29 20:41:35 +03:00
levlam
398a996ef8 Use explicit EVP_MD_fetch with OpenSSL 3.0, because EVP_sha* fetch algorithm each time and are extremely slow in OpenSSL 3.0. 2022-08-29 16:19:47 +03:00
levlam
28594d38e4 Add thread::send_real_time_signal. 2022-08-22 00:46:22 +03:00
levlam
959c7261c1 Fix function name. 2022-08-22 00:17:53 +03:00
levlam
91bdc57ecc Add WaitFreeHashSet.h to CMakeLists.txt. 2022-08-21 13:36:17 +03:00
levlam
59a5f15a41 Add WaitFreeHashSet. 2022-08-20 16:19:58 +03:00
levlam
1afbbe5fca Add table for small codes in get_unicode_simple_category. 2022-08-19 19:50:34 +03:00
levlam
88b52f1535 Use variable step in unicode_simple_category_jump_pos. 2022-08-19 18:56:36 +03:00
levlam
231c47e237 Use linear search in get_unicode_simple_category. 2022-08-19 18:06:29 +03:00
levlam
5c9d306208 Optimize get_unicode_simple_category with jump table. 2022-08-19 17:56:47 +03:00
levlam
96cca84a60 Remove source from next_utf8_unsafe. 2022-08-19 16:37:44 +03:00
levlam
a8b3573a00 Always pass non-null pointer to next_utf8_unsafe. 2022-08-19 16:19:58 +03:00
levlam
8f433070df Minor fixes. 2022-08-14 15:04:08 +03:00
levlam
9e4ae8997b Fix WaitFreeHashMap::get_pointer. 2022-08-04 22:40:22 +03:00
levlam
616455088f Improve WaitFreeHashMap. 2022-08-04 15:25:46 +03:00
levlam
6f46b50b4b Add WaitFreeHashMap::foreach. 2022-08-04 15:08:18 +03:00
levlam
08dbc7d9f2 Add operator[] to WaitFreeHashMap. 2022-08-04 00:38:13 +03:00
levlam
98afc516dc Use WaitFreeVector in Enumerator. 2022-08-03 22:51:07 +03:00
levlam
2be8c86855 Optimize size() and empty() for WaitFreeVector. 2022-08-03 22:48:18 +03:00
levlam
36693a3872 Support unique_ptr values in WaitFreeHashMap. 2022-08-03 21:17:10 +03:00
levlam
2d705004a3 Add WaitFreeVector. 2022-08-02 14:27:18 +03:00
levlam
64c718c0a1 Fix suppression of an expected error. 2022-08-01 19:34:37 +03:00
levlam
d55869eedb Minor improvements. 2022-07-23 14:53:32 +03:00
levlam
36a57c3584 Remove unneeded FlatHashTable copy constructors. 2022-07-23 11:13:17 +03:00
levlam
0f87447ffc Asynchronously destroy some big data storages. 2022-07-20 13:40:14 +03:00
levlam
ac8af37872 Add size() and empty() to WaitFreeHashMap. 2022-07-20 13:35:32 +03:00
levlam
6eef50f769 Remove unused DelayedClosure private constructors. 2022-07-17 12:11:04 +03:00
levlam
2cc8f34a7d Remove unused to_delayed_closure functions. 2022-07-17 11:41:31 +03:00
levlam
04a7583bd0 Remove unused Event::clone method. 2022-07-17 10:41:17 +03:00
levlam
0bdd15fe9f Fix warning. 2022-07-15 00:06:41 +03:00
levlam
abc9ed2cd9 Minor fixes. 2022-07-14 18:38:48 +03:00
Arseny Smirnov
bf80c43c05 fix CE 2022-07-14 18:36:46 +04:00
Arseny Smirnov
f4c97b25ec add Mutex wrapper around std::mutex and use it instead of SpinLock 2022-07-14 16:27:06 +04:00
Arseny Smirnov
7ddc3099f6 remove td::this_thread::yield function. usleep_for(1) used instead 2022-07-14 16:15:17 +04:00
levlam
6eb03bdc8b Generate GitCommitHash.cpp during building. 2022-07-11 12:20:31 +03:00
levlam
bb5ebc09ef Disable git commit hash calculation, because the current approach must be completely replaced. 2022-07-09 22:27:41 +03:00
levlam
d37ad61f86 Generate GIT_COMMIT and GIT_DIRTY from CMake. 2022-07-08 20:56:43 +03:00
levlam
ff3235e6d5 Update comment. 2022-07-07 22:23:58 +03:00
levlam
f8b49fe421 Ensure that gen_git_commit_h works even without git. 2022-07-07 20:38:44 +03:00
levlam
cb559c396d Use FlatHashTable instead of std::unordered_map/std::unordered_set. 2022-06-30 00:59:27 +03:00
levlam
26fdb92dd8 Minor improvements. 2022-06-28 15:32:05 +03:00
levlam
ebebe0300c Move promise_send_closure to PromiseFuture.h. 2022-06-28 14:02:14 +03:00
levlam
340fb779c3 Move Promise implementation details to namespace detail. 2022-06-28 10:48:03 +03:00
levlam
003fa6ffee Remove back template lambda support in Promise. 2022-06-28 10:32:56 +03:00
levlam
32bac7bd24 Move Promise to tdutils. 2022-06-27 13:30:18 +03:00
levlam
b97bd4848b Allow to inline BufferAllocator::track_buffer_slice. 2022-06-24 19:00:29 +03:00
levlam
70f7373729 Pretend that statistics is collected at least for a second on start. 2022-06-21 20:06:39 +03:00
levlam
1e417ea212 Minor fixes. 2022-06-02 16:19:16 +03:00
levlam
33d1dfec0e Add LargeFiles test. 2022-05-11 19:03:03 +03:00
levlam
1b5798393d Move FloodControlGlobal to tdutils. 2022-06-09 17:12:59 +03:00
levlam
a282cce5d4 Add and use utf8_encode. 2022-05-31 15:08:16 +03:00
levlam
83b7be1af9 Ignore expected unprocessed error in def_load:system lib. 2022-05-26 17:06:00 +03:00
levlam
5fda16c89e Add WaitFreeHashMap. 2022-05-19 19:22:33 +03:00
levlam
e4bff687cf Add td::remove_emoji_selectors test. 2022-05-12 19:18:14 +03:00
levlam
805e4d4a25 Add get_fitzpatrick_modifier test. 2022-05-12 19:11:17 +03:00
levlam
e6738efa3f Add test for remove_emoji_modifiers. 2022-05-12 19:04:37 +03:00
levlam
6377a15d02 Move is_emoji test to separate file. 2022-05-12 18:45:25 +03:00
levlam
de5f047dba Remove all emoji modifiers, including modifiers in the middle. 2022-05-12 18:02:27 +03:00
levlam
bb0908504b Fix clean_filename test. 2022-05-12 13:10:19 +03:00
levlam
6b838b706b Increase bound for unique_ptr-based HashTable node usage to improve performance. 2022-05-02 20:46:20 +03:00
levlam
4652292037 Use count instead of find if appropriate. 2022-05-01 23:03:06 +03:00
levlam
17275fe422 Output the number of objects to be freed on closing. 2022-04-25 20:52:44 +03:00
levlam
c021bdfb98 Add 4 more allowed characters for file name from file extension in accordance with Telegram server-side limit. 2022-04-20 19:31:30 +03:00
levlam
43ea7be0fb Add fast-moved implementation for big HashSet nodes. 2022-04-19 02:33:12 +03:00
levlam
e8c3792776 Don't try to increase hash table if no new element inserted. 2022-04-18 21:27:38 +03:00
levlam
9b19e88c2a Use file name instead of notification sound title if there is none. 2022-04-17 19:01:01 +03:00
levlam
7364334ebe Add internalLinkTypeAttachMenuBot. 2022-04-01 14:00:34 +03:00
levlam
a7a6ee25cb Add pq_add_mul static function. 2022-03-21 20:57:47 +03:00
levlam
2ae689f54f Add another pq_factorize test. 2022-03-21 20:43:28 +03:00
levlam
93a2b9895d Optimize GCD in pq_factorize. 2022-03-21 19:38:40 +03:00
levlam
6e86faaa0f Improve factorization tests. 2022-03-20 00:01:07 +03:00
levlam
ccf2da2865 Move find_package(ABSL) under TD_WITH_ABSEIL. 2022-03-14 16:20:56 +03:00
levlam
cd21f58e7d Optimize FlatHashTable::emplace. 2022-03-14 13:25:41 +03:00
levlam
057b2d1e05 Remove EndSentinel, not allowed in C++14. 2022-03-13 23:14:18 +03:00
levlam
daef14ade1 Return NodePointer instead of iterator in find/emplace. 2022-03-12 15:27:14 +03:00
levlam
62f463b421 Use a sentinel for FlatHashTable::end(). 2022-03-12 13:26:03 +03:00
levlam
eb89f8b35f Minor include fixes. 2022-03-12 00:50:04 +03:00
levlam
254f10b885 Fix include. 2022-03-11 21:49:58 +03:00
levlam
1f38124861 Use FlatHashSet. 2022-03-11 21:38:48 +03:00
levlam
3eda5b17ac FlatHashTable: optimize find. 2022-03-11 14:10:10 +03:00
levlam
acf30d3700 Fix HashTable::operator->. 2022-03-11 13:34:36 +03:00
levlam
2413b3fd37 Add unordered_map<string, ...> benchmark. 2022-03-09 23:23:44 +03:00
levlam
7f7344c363 Add separate FlatHashSet.h. 2022-03-09 23:01:10 +03:00
levlam
eac8550ec6 Move non-template FlatHashTable functions to cpp. 2022-03-09 18:16:59 +03:00
levlam
07bb129653 Move FlatHashTable implementation to FlatHashTable.h. 2022-03-09 18:03:56 +03:00
levlam
15520c5ddd Move static functions out of FlatHashTable. 2022-03-09 17:00:22 +03:00
levlam
44b844eeeb Rename is_key_empty to is_hash_table_key_empty. 2022-03-09 16:40:50 +03:00
levlam
8b897c7c5f Move MapNode and SetNode to separate classes. 2022-03-09 16:29:47 +03:00
levlam
ea52727c21 Add FlatHashTable::create_iterator private function. 2022-03-09 15:44:14 +03:00
levlam
d8071f458e Remove now unneeded identity helper functions. 2022-03-09 15:34:56 +03:00
levlam
5cda813bd9 Move control block back to FlatHashTable itself to avoid cache line sharing between control blocks of all big tables. 2022-03-09 15:17:29 +03:00
levlam
a59e6b8ffe Add static_assert that flag in STORE_FLAG/PARSE_FLAG is bool. 2022-03-01 21:39:24 +03:00
levlam
f993bebc2f Disable FlatHashTable for release. 2022-03-01 15:16:57 +03:00
levlam
1f300c50e0 DownloadManager fixes. 2022-02-28 18:25:07 +03:00
levlam
21a71e6441 Minor improvements. 2022-02-25 16:18:23 +03:00
levlam
c631c8c356 Slightly optimize FlatHashTable::resize. 2022-02-25 14:30:02 +03:00
levlam
9590cdd8d0 Optimize erase_node, part 2. 2022-02-25 14:27:38 +03:00
levlam
03a994e198 Optimize erase_node, part 1. 2022-02-25 13:53:13 +03:00
levlam
ef14369058 Store bucket_count in FlatHashTableInner. 2022-02-25 04:04:29 +03:00
levlam
01b884858d Return the same begin() if hashtable wasn't changed. 2022-02-25 00:24:27 +03:00
levlam
a657cf6458 Use random begin() in HashTable. 2022-02-25 00:04:32 +03:00
levlam
f298d71c08 HashTable bug fixes. 2022-02-24 22:04:21 +03:00
levlam
ecb14f1bdd Minore fixes. 2022-02-24 21:38:57 +03:00
levlam
35cf57eed8 Consistently use uint32 in FlatHashTable. 2022-02-23 22:51:43 +03:00
levlam
fe06a1d4fc Fix GCC warnings. 2022-02-23 22:46:32 +03:00
levlam
e1909b018e Reduce size of an empty FlatHashTable. 2022-02-23 22:13:40 +03:00
levlam
3da16b4501 Use bucket_count() instead of nodes_.size(). 2022-02-23 18:20:25 +03:00
Arseny Smirnov
e2c7601c2b DownloadManager: draft 2022-02-23 19:34:26 +01:00
levlam
6f2a9270a3 Always try shrink after node erasure. 2022-02-23 18:05:56 +03:00
levlam
d090929249 Store end_ in iterator instead of map itself. 2022-02-23 17:41:11 +03:00
levlam
b307396628 Simplify FlatHashTable implementation. 2022-02-23 16:34:42 +03:00
levlam
73ade8cc43 Randomize hash value and optimize bucket calculation. 2022-02-23 16:27:19 +03:00
levlam
b3a784f4ba Properly clear other hashmap after move. 2022-02-23 15:58:12 +03:00
levlam
5f5205ae6c Remove unneeded return values from hashtable move-assignment operators. 2022-02-23 15:50:58 +03:00
levlam
1f12b0d8e8 Allow folly usages only if TD_TEST_FOLLY is defined. 2022-02-23 15:01:53 +03:00
levlam
c9c9a73499 Fix swap(fixed_vector) usages. 2022-02-21 05:49:59 +03:00
levlam
f0a2ccd0fb Remove value_type from SetNode. 2022-02-21 02:22:01 +03:00
levlam
9e8b2489bd Keep the first value from initializer_list. 2022-02-21 00:33:19 +03:00
levlam
77ccc13181 Add Map/SetNode::copy_from. 2022-02-20 23:03:34 +03:00
levlam
983cc2c45c Various hash table improvements. 2022-02-19 11:34:43 +03:00
levlam
94289c0c9e Fix SCOPE_EXIT redefinition. 2022-02-18 23:25:23 +03:00
levlam
ae3854d97c Various fixes. 2022-02-18 23:04:25 +03:00
levlam
b5cf85d6e2 Fix compilation error. 2022-02-18 15:15:58 +03:00
Arseny Smirnov
952ac3ed7c FlatHashMap: add MaskSse2 to benchmark 2022-02-18 00:48:33 +01:00
Arseny Smirnov
39934a7f9e FlatHashMap: sse2 support 2022-02-18 00:47:58 +01:00
Arseny Smirnov
a356cc7e3d FlatHashMap: optimizations 2022-02-18 00:30:14 +01:00
Arseny Smirnov
5ff92065bf FlatHashMap: fixes for portability 2022-02-17 20:22:46 +01:00
Arseny Smirnov
34a69e3133 FlatHashMap: add implementation with chunks 2022-02-17 19:40:18 +01:00
levlam
512c0cd3c2 Fix formatting. 2022-02-12 00:48:35 +03:00
Arseny Smirnov
a11d37dd4c FlatHashMap: fix CE 2022-02-11 18:11:17 +01:00
Arseny Smirnov
ecceb51881 FlatHashSet 2022-02-11 17:41:40 +01:00
levlam
15f27455c5 Move other big classes inside FlatHashMap to unique_ptr. 2022-02-11 19:27:32 +03:00
levlam
5b4bea1fef Add HashMap build time benchmark. 2022-02-11 14:46:30 +03:00
levlam
6ae2096d68 Fix HashSet benchmark. 2022-02-11 11:26:58 +03:00
Arseny Smirnov
1a3adc3ee7 FlatHashTable: bugfix 2022-02-10 22:44:40 +01:00
Arseny Smirnov
500c20f7ea FlatHashMap: more benchmarks 2022-02-10 22:34:01 +01:00
levlam
b71e330396 Fix tests. 2022-02-11 00:11:02 +03:00
levlam
b8ab910b81 Various improvements. 2022-02-10 23:01:28 +03:00
Arseny Smirnov
987e875520 FlatHashMap: support mem_stat->rss in memory benchmark; move memory benchmark in other folder, fix build. 2022-02-10 18:33:23 +01:00
Arseny Smirnov
6bb365567b FlatHashMap: improve memory benchmark 2022-02-10 18:29:52 +01:00
levlam
1a28bbd00c Remove redundant checks from calc_bucket. 2022-02-10 18:30:03 +03:00
Arseny Smirnov
10c59db842 FlatHashMap: simple benchmark for memory usage 2022-02-10 14:37:19 +01:00
Arseny Smirnov
f4b3a09646 FlatHashMap: shrink table if too sparse 2022-02-10 14:37:19 +01:00
levlam
9e6d106585 Minor improvements. 2022-02-10 11:55:32 +03:00
Arseny Smirnov
129d12566d FlatHashMap: add tests 2022-02-09 22:22:51 +01:00
Arseny Smirnov
8d8896d7f0 FlatHashMap: remove_if; generic td::table_remove_if 2022-02-09 22:22:51 +01:00
Arseny Smirnov
87354498e4 cmake: use SYSTEM after PUBLIC or PRIVATE in target_link_libraries to avoid error 2022-02-09 22:22:51 +01:00
levlam
967cb9e8a5 Fix compilation error. 2022-02-09 18:41:38 +03:00
levlam
22ed61e1b7 More FlatHashMap usages. 2022-02-09 17:05:27 +03:00
levlam
b403a3793d Explicitly check for empty key in FlatHashImpl::find. 2022-02-09 15:41:23 +03:00