diff options
| author | Tyge Lovset <[email protected]> | 2021-11-03 23:15:59 +0100 |
|---|---|---|
| committer | Tyge Lovset <[email protected]> | 2021-11-03 23:15:59 +0100 |
| commit | d25619e0d6ac9970c23610326285d549c266c7c8 (patch) | |
| tree | 65130479d28acaea792f5ed01c5aa79ebed42d1d | |
| parent | 85a7ff53750a55fee9a45083abb2f6daa5b19164 (diff) | |
| download | STC-modified-d25619e0d6ac9970c23610326285d549c266c7c8.tar.gz STC-modified-d25619e0d6ac9970c23610326285d549c266c7c8.zip | |
Renamed cnt_X_getmut() to cnt_X_get_mut().
| -rw-r--r-- | benchmarks/rust_hashmap.rs | 89 | ||||
| -rw-r--r-- | docs/cdeq_api.md | 2 | ||||
| -rw-r--r-- | docs/clist_api.md | 14 | ||||
| -rw-r--r-- | docs/cmap_api.md | 2 | ||||
| -rw-r--r-- | docs/cset_api.md | 2 | ||||
| -rw-r--r-- | docs/csmap_api.md | 2 | ||||
| -rw-r--r-- | docs/csset_api.md | 2 | ||||
| -rw-r--r-- | docs/cvec_api.md | 2 | ||||
| -rw-r--r-- | include/stc/cdeq.h | 2 | ||||
| -rw-r--r-- | include/stc/clist.h | 2 | ||||
| -rw-r--r-- | include/stc/cmap.h | 2 | ||||
| -rw-r--r-- | include/stc/csmap.h | 2 | ||||
| -rw-r--r-- | include/stc/cvec.h | 2 |
13 files changed, 64 insertions, 61 deletions
diff --git a/benchmarks/rust_hashmap.rs b/benchmarks/rust_hashmap.rs index d1372e8b..cd1f114e 100644 --- a/benchmarks/rust_hashmap.rs +++ b/benchmarks/rust_hashmap.rs @@ -1,44 +1,45 @@ -use std::time::{Instant};
-use std::io::Read;
-
-fn romu_rotl(val: u64, r: u32) -> u64
- { return (val << r) | (val >> (64 - r)); }
-
-fn romu_trio(s: &mut[u64]) -> u64 {
- let xp = s[0]; let yp = s[1]; let zp = s[2];
- s[0] = 15241094284759029579 * zp;
- s[1] = yp - xp; s[1] = romu_rotl(s[1], 12);
- s[2] = zp - yp; s[2] = romu_rotl(s[2], 44);
- return xp;
-}
-
-fn main() {
- let n = 50_000_000; let mask = (1 << 25) - 1;
- let mut m = std::collections::HashMap::<u64, u64>::with_capacity(n);
- let mut rng: [u64; 3] = [1872361123, 123879177, 87739234];
- println!("Rust HashMap n = {}, mask = {:#x}", n, mask);
- let now = Instant::now();
- for _i in 0..n {
- let key: u64 = romu_trio(&mut rng) & mask;
- *m.entry(key).or_insert(0) += 1;
- }
- println!("insert : {}ms \tsize : {}", now.elapsed().as_millis(), m.len());
- let now = Instant::now();
- let mut sum = 0;
- for i in 0..mask + 1 { if m.contains_key(&i) { sum += 1; }}
- println!("lookup : {}ms \tsum : {}", now.elapsed().as_millis(), sum);
-
- let now = Instant::now();
- let mut sum = 0;
- for (_, value) in &m { sum += value; }
- println!("iterate : {}ms \tsum : {}", now.elapsed().as_millis(), sum);
-
- let mut rng: [u64; 3] = [1872361123, 123879177, 87739234];
- let now = Instant::now();
- for _ in 0..n {
- let key: u64 = romu_trio(&mut rng) & mask;
- m.remove(&key);
- }
- println!("remove : {}ms \tsize : {}", now.elapsed().as_millis(), m.len());
- println!("press a key:"); std::io::stdin().bytes().next();
-}
\ No newline at end of file +use std::time::{Instant}; +use std::io::Read; + +fn romu_rotl(val: u64, r: u32) -> u64 + { return (val << r) | (val >> (64 - r)); } + +fn romu_trio(s: &mut[u64]) -> u64 { + let xp = s[0]; let yp = s[1]; let zp = s[2]; + s[0] = 15241094284759029579 * zp; + s[1] = yp - xp; s[1] = romu_rotl(s[1], 12); + s[2] = zp - yp; s[2] = romu_rotl(s[2], 44); + return xp; +} + +fn main() { + let n = 50_000_000; let mask = (1 << 25) - 1; + let mut m = std::collections::HashMap::<u64, u64>::with_capacity(n); + let mut rng: [u64; 3] = [1872361123, 123879177, 87739234]; + println!("Rust HashMap n = {}, mask = {:#x}", n, mask); + let now = Instant::now(); + for _i in 0..n { + let key: u64 = romu_trio(&mut rng) & mask; + *m.entry(key).or_insert(0) += 1; + } + + println!("insert : {}ms \tsize : {}", now.elapsed().as_millis(), m.len()); + let now = Instant::now(); + let mut sum = 0; + for i in 0..mask + 1 { if m.contains_key(&i) { sum += 1; }} + println!("lookup : {}ms \tsum : {}", now.elapsed().as_millis(), sum); + + let now = Instant::now(); + let mut sum = 0; + for (_, value) in &m { sum += value; } + println!("iterate : {}ms \tsum : {}", now.elapsed().as_millis(), sum); + + let mut rng: [u64; 3] = [1872361123, 123879177, 87739234]; + let now = Instant::now(); + for _ in 0..n { + let key: u64 = romu_trio(&mut rng) & mask; + m.remove(&key); + } + println!("remove : {}ms \tsize : {}", now.elapsed().as_millis(), m.len()); + println!("press a key:"); std::io::stdin().bytes().next(); +} diff --git a/docs/cdeq_api.md b/docs/cdeq_api.md index 98cb4e52..22487682 100644 --- a/docs/cdeq_api.md +++ b/docs/cdeq_api.md @@ -39,7 +39,7 @@ size_t cdeq_X_capacity(cdeq_X deq); const cdeq_X_value* cdeq_X_at(const cdeq_X* self, size_t idx); const cdeq_X_value* cdeq_X_get(const cdeq_X* self, i_valraw raw); // return NULL if not found -cdeq_X_value* cdeq_X_getmut(cdeq_X* self, i_valraw raw); // mutable get +cdeq_X_value* cdeq_X_get_mut(cdeq_X* self, i_valraw raw); // mutable get cdeq_X_iter cdeq_X_find(const cdeq_X* self, i_valraw raw); cdeq_X_iter cdeq_X_find_in(cdeq_X_iter i1, cdeq_X_iter i2, i_valraw raw); diff --git a/docs/clist_api.md b/docs/clist_api.md index a00b9551..b45108a7 100644 --- a/docs/clist_api.md +++ b/docs/clist_api.md @@ -42,10 +42,10 @@ clist_X clist_X_clone(clist_X list); void clist_X_clear(clist_X* self); void clist_X_copy(clist_X* self, clist_X other); -void clist_X_del(clist_X* self); // destructor +void clist_X_del(clist_X* self); // destructor bool clist_X_empty(clist_X list); -size_t clist_X_count(clist_X list); // size() in O(n) time +size_t clist_X_count(clist_X list); // size() in O(n) time clist_X_value* clist_X_front(const clist_X* self); clist_X_value* clist_X_back(const clist_X* self); @@ -54,7 +54,7 @@ void clist_X_push_front(clist_X* self, i_val value); void clist_X_emplace_front(clist_X* self, i_valraw raw); void clist_X_pop_front(clist_X* self); -void clist_X_push_back(clist_X* self, i_val value); // note: no pop_back(). +void clist_X_push_back(clist_X* self, i_val value); // note: no pop_back(). void clist_X_emplace_back(clist_X* self, i_valraw raw); clist_X_iter clist_X_insert(clist_X* self, clist_X_iter it, i_val value); // return iter to new elem @@ -62,22 +62,24 @@ clist_X_iter clist_X_emplace(clist_X* self, clist_X_iter it, i_valraw raw clist_X_iter clist_X_erase_at(clist_X* self, clist_X_iter it); // return iter after it clist_X_iter clist_X_erase_range(clist_X* self, clist_X_iter it1, clist_X_iter it2); -size_t clist_X_remove(clist_X* self, i_valraw raw); // removes matching elements +size_t clist_X_remove(clist_X* self, i_valraw raw); // removes matching elements -clist_X clist_X_split_off(clist_X* self, clist_X_iter i1, clist_X_iter i2); // split off [i1, i2) +clist_X clist_X_split_off(clist_X* self, clist_X_iter i1, clist_X_iter i2); // split off [i1, i2) clist_X_iter clist_X_splice(clist_X* self, clist_X_iter it, clist_X* other); // return updated valid it clist_X_iter clist_X_splice_range(clist_X* self, clist_X_iter it, // return updated valid it clist_X* other, clist_X_iter it1, clist_X_iter it2); clist_X_iter clist_X_find(const clist_X* self, i_valraw raw); clist_X_iter clist_X_find_in(clist_X_iter it1, clist_X_iter it2, i_valraw raw); +const i_val* clist_X_get(const clist_X* self, i_valraw val); +i_val* clist_X_get_mut(clist_X* self, i_valraw val); void clist_X_sort(clist_X* self); clist_X_iter clist_X_begin(const clist_X* self); clist_X_iter clist_X_end(const clist_X* self); void clist_X_next(clist_X_iter* it); -clist_X_iter clist_X_advance(clist_X_iter it, size_t n); // return it n elements ahead. End allowed. +clist_X_iter clist_X_advance(clist_X_iter it, size_t n); // return n elements ahead. clist_X_rawvalue clist_X_value_toraw(clist_X_value* pval); clist_X_value clist_X_value_clone(clist_X_value val); diff --git a/docs/cmap_api.md b/docs/cmap_api.md index 809cb2e8..7f7ffe6f 100644 --- a/docs/cmap_api.md +++ b/docs/cmap_api.md @@ -56,7 +56,7 @@ size_t cmap_X_bucket_count(cmap_X map); const cmap_X_mapped* cmap_X_at(const cmap_X* self, i_keyraw rkey); // rkey must be in map. const cmap_X_value* cmap_X_get(const cmap_X* self, i_keyraw rkey); // const get -cmap_X_value* cmap_X_getmut(cmap_X* self, i_keyraw rkey); // mutable get +cmap_X_value* cmap_X_get_mut(cmap_X* self, i_keyraw rkey); // mutable get bool cmap_X_contains(const cmap_X* self, i_keyraw rkey); cmap_X_iter cmap_X_find(const cmap_X* self, i_keyraw rkey); // find element diff --git a/docs/cset_api.md b/docs/cset_api.md index 017371d3..8ded9d0c 100644 --- a/docs/cset_api.md +++ b/docs/cset_api.md @@ -42,7 +42,7 @@ size_t cset_X_bucket_count(cset_X set); bool cset_X_contains(const cset_X* self, i_keyraw rkey);
const cset_X_value* cset_X_get(const cset_X* self, i_keyraw rkey); // return NULL if not found
-cset_X_value* cset_X_getmut(cset_X* self, i_keyraw rkey); // mutable get
+cset_X_value* cset_X_get_mut(cset_X* self, i_keyraw rkey); // mutable get
cset_X_iter cset_X_find(const cset_X* self, i_keyraw rkey);
cset_X_result cset_X_insert(cset_X* self, i_key key);
diff --git a/docs/csmap_api.md b/docs/csmap_api.md index 3ae7dde2..646f8c99 100644 --- a/docs/csmap_api.md +++ b/docs/csmap_api.md @@ -47,7 +47,7 @@ bool csmap_X_empty(csmap_X map); const csmap_X_mapped* csmap_X_at(const csmap_X* self, i_keyraw rkey); // rkey must be in map. const csmap_X_value* csmap_X_get(const csmap_X* self, i_keyraw rkey); // return NULL if not found -csmap_X_value* csmap_X_getmut(csmap_X* self, i_keyraw rkey); // mutable get +csmap_X_value* csmap_X_get_mut(csmap_X* self, i_keyraw rkey); // mutable get bool csmap_X_contains(const csmap_X* self, i_keyraw rkey); csmap_X_iter csmap_X_find(const csmap_X* self, i_keyraw rkey); csmap_X_value* csmap_X_find_it(const csmap_X* self, i_keyraw rkey, csmap_X_iter* out); // return NULL if not found diff --git a/docs/csset_api.md b/docs/csset_api.md index 9034f78f..501473a6 100644 --- a/docs/csset_api.md +++ b/docs/csset_api.md @@ -34,7 +34,7 @@ size_t csset_X_size(csset_X set); bool csset_X_empty(csset_X set);
const csset_X_value* csset_X_get(const csset_X* self, i_keyraw rkey); // const get
-csset_X_value* csset_X_getmut(csset_X* self, i_keyraw rkey); // return NULL if not found
+csset_X_value* csset_X_get_mut(csset_X* self, i_keyraw rkey); // return NULL if not found
bool csset_X_contains(const csset_X* self, i_keyraw rkey);
csset_X_iter csset_X_find(const csset_X* self, i_keyraw rkey);
csset_X_value* csset_X_find_it(const csset_X* self, i_keyraw rkey, csset_X_iter* out); // return NULL if not found
diff --git a/docs/cvec_api.md b/docs/cvec_api.md index 3dcb4855..64ca724f 100644 --- a/docs/cvec_api.md +++ b/docs/cvec_api.md @@ -47,7 +47,7 @@ size_t cvec_X_capacity(cvec_X vec); const cvec_X_value* cvec_X_at(const cvec_X* self, size_t idx); const cvec_X_value* cvec_X_get(const cvec_X* self, i_valraw raw); // return NULL if not found -cvec_X_value* cvec_X_getmut(cvec_X* self, i_valraw raw); // get mutable value +cvec_X_value* cvec_X_get_mut(cvec_X* self, i_valraw raw); // get mutable value cvec_X_iter cvec_X_find(const cvec_X* self, i_valraw raw); cvec_X_iter cvec_X_find_in(cvec_X_iter i1, cvec_X_iter i2, i_valraw raw); cvec_X_iter cvec_X_bsearch(const cvec_X* self, i_valraw raw); diff --git a/include/stc/cdeq.h b/include/stc/cdeq.h index 4e35a569..bd7085c7 100644 --- a/include/stc/cdeq.h +++ b/include/stc/cdeq.h @@ -183,7 +183,7 @@ _cx_memb(_get)(const _cx_self* self, i_valraw raw) { }
STC_INLINE _cx_value*
-_cx_memb(_getmut)(_cx_self* self, i_valraw raw)
+_cx_memb(_get_mut)(_cx_self* self, i_valraw raw)
{ return (_cx_value *) _cx_memb(_get)(self, raw); }
STC_INLINE void
diff --git a/include/stc/clist.h b/include/stc/clist.h index 93e8c249..037d5104 100644 --- a/include/stc/clist.h +++ b/include/stc/clist.h @@ -172,7 +172,7 @@ _cx_memb(_get)(const _cx_self* self, i_valraw val) { }
STC_INLINE _cx_value*
-_cx_memb(_getmut)(_cx_self* self, i_valraw val) {
+_cx_memb(_get_mut)(_cx_self* self, i_valraw val) {
return _cx_memb(_find_in)(_cx_memb(_begin)(self), _cx_memb(_end)(self), val).ref;
}
diff --git a/include/stc/cmap.h b/include/stc/cmap.h index 100f93f6..1a0f28b4 100644 --- a/include/stc/cmap.h +++ b/include/stc/cmap.h @@ -177,7 +177,7 @@ _cx_memb(_get)(const _cx_self* self, i_keyraw rkey) { }
STC_INLINE _cx_value*
-_cx_memb(_getmut)(const _cx_self* self, i_keyraw rkey)
+_cx_memb(_get_mut)(const _cx_self* self, i_keyraw rkey)
{ return (_cx_value*) _cx_memb(_get)(self, rkey); }
STC_INLINE _cx_iter
diff --git a/include/stc/csmap.h b/include/stc/csmap.h index a42bd030..34ff22d7 100644 --- a/include/stc/csmap.h +++ b/include/stc/csmap.h @@ -116,7 +116,7 @@ STC_INLINE bool _cx_memb(_contains)(const _cx_self* self, i_keyraw rkey) { _cx_iter it; return _cx_memb(_find_it)(self, rkey, &it) != NULL; }
STC_INLINE const _cx_value* _cx_memb(_get)(const _cx_self* self, i_keyraw rkey)
{ _cx_iter it; return _cx_memb(_find_it)(self, rkey, &it); }
-STC_INLINE _cx_value* _cx_memb(_getmut)(_cx_self* self, i_keyraw rkey)
+STC_INLINE _cx_value* _cx_memb(_get_mut)(_cx_self* self, i_keyraw rkey)
{ _cx_iter it; return _cx_memb(_find_it)(self, rkey, &it); }
STC_INLINE _cx_self
diff --git a/include/stc/cvec.h b/include/stc/cvec.h index 8c213e8a..a650d277 100644 --- a/include/stc/cvec.h +++ b/include/stc/cvec.h @@ -205,7 +205,7 @@ _cx_memb(_get)(const _cx_self* self, i_valraw raw) { }
STC_INLINE _cx_value*
-_cx_memb(_getmut)(const _cx_self* self, i_valraw raw)
+_cx_memb(_get_mut)(const _cx_self* self, i_valraw raw)
{ return (_cx_value*) _cx_memb(_get)(self, raw); }
STC_INLINE _cx_iter
|
