1.0.0 • Published 2 years ago

nv-array-small-fifo v1.0.0

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

nv-array-small-fifo

  • nv-array-small-fifo
  • small-fixed-size-array, slightly faster than the-built-in-array-methods if size is small (<=8)
  • its a simplified version of nv-facutil-cache-cursor AND nv-facutil-fixed-cache-cursor
  • for test u64-shape(a special generic-type which includes all-8byte-length-data-type) in nvlang

install

  • npm install nv-array-small-fifo

usage

  const creat_sfifo = require("nv-array-small-fifo");
  var sfifo         = creat_sfifo(
           8        , /*       capacity: default is 8                      */
           undefined  /* nihil OR empty: default is undefined in js-version*/
  );

example

push AND pop

        > var sfifo = creat_sfifo(8,undefined);
        undefined
        > sfifo
        Sfifo(8) [
          undefined,
          undefined,
          undefined,
          undefined,
          undefined,
          undefined,
          undefined,
          undefined,
          '#empty': undefined,
          '#ei': 0
        ]
        > sfifo.push_one(11)
        undefined
        > sfifo.push_one(22)
        undefined
        > sfifo.push_one(33)
        undefined
        > sfifo.push_one(44)
        undefined
        > sfifo.push_one(55)
        undefined
        > sfifo
        Sfifo(8) [
          11,
          22,
          33,
          44,
          55,
          undefined,
          undefined,
          undefined,
          '#empty': undefined,
          '#ei': 5
        ]
        > sfifo.push_one(66)
        undefined
        > sfifo.push_one(77) 
        undefined
        > sfifo.push_one(88) 
        undefined
        > sfifo.push_one(99)   
        undefined
        > sfifo
        Sfifo(8) [
          22,
          33,
          44,
          55,
          66,
          77,
          88,
          99,
          '#empty': undefined,
          '#ei': 8
        ]
        > var sfifo = creat_sfifo(8,undefined);
        undefined
        > sfifo.push(11,22,33,44,55,66,77,88,99);                   
        8
        > sfifo 
        Sfifo(8) [
          22,
          33,
          44,
          55,
          66,
          77,
          88,
          99,
          '#empty': undefined,
          '#ei': 8
        ]
        > sfifo.push(11,22,33,44,55)         
        8
        > sfifo                                                     
        Sfifo(8) [
          77,
          88,
          99,
          11,
          22,
          33,
          44,
          55,
          '#empty': undefined,
          '#ei': 8
        ]
        > var sfifo = creat_sfifo(8,undefined);
        undefined
        > sfifo.push(11,22,33,44,55)
        5
        > sfifo                                                     
        Sfifo(8) [
          11,
          22,
          33,
          44,
          55,
          undefined,
          undefined,
          undefined,
          '#empty': undefined,
          '#ei': 5
        ]
        > sfifo.push(66,77)
        7
        > sfifo
        Sfifo(8) [
          11,
          22,
          33,
          44,
          55,
          66,
          77,
          undefined,
          '#empty': undefined,
          '#ei': 7
        ]
        > sfifo.push(88,99,'aa')
        8
        > sfifo
        Sfifo(8) [
          33,
          44,
          55,
          66,
          77,
          88,
          99,
          'aa',
          '#empty': undefined,
          '#ei': 8
        ]
        > sfifo.pop_one()
        'aa'
        > sfifo.pop_one()
        99
        > sfifo 
        Sfifo(8) [
          33,
          44,
          55,
          66,
          77,
          88,
          undefined,
          undefined,
          '#empty': undefined,
          '#ei': 6
        ]
        > sfifo.pop(3)
        [ 66, 77, 88 ]
        > sfifo 
        Sfifo(8) [
          33,
          44,
          55,
          undefined,
          undefined,
          undefined,
          undefined,
          undefined,
          '#empty': undefined,
          '#ei': 3
        ]
        > 

unshift AND shift

    > var sfifo = creat_sfifo(8,undefined);
    undefined
    > sfifo.unshift_one(11)
    undefined
    > sfifo.unshift_one(22)
    undefined
    > sfifo.unshift_one(33)
    undefined
    > sfifo.unshift_one(44)
    undefined
    > sfifo.unshift_one(55)
    undefined
    > sfifo
    Sfifo(8) [
      55,
      44,
      33,
      22,
      11,
      undefined,
      undefined,
      undefined,
      '#empty': undefined,
      '#ei': 5
    ]
    > sfifo.unshift_one(66)
    undefined
    > sfifo.unshift_one(77)
    undefined
    > sfifo.unshift_one(88)
    undefined
    > sfifo.unshift_one(99)
    undefined
    > sfifo
    Sfifo(8) [
      99,
      88,
      77,
      66,
      55,
      44,
      33,
      22,
      '#empty': undefined,
      '#ei': 8
    ]
    >
    >
    > var sfifo = creat_sfifo(8,undefined);
    undefined
    > sfifo.unshift(11,22,33,44,55,66,77,88,99);
    8
    > sfifo
    Sfifo(8) [
      22,
      33,
      44,
      55,
      66,
      77,
      88,
      99,
      '#empty': undefined,
      '#ei': 8
    ]
    > sfifo.unshift(11,22,33,44,55)
    8
    > sfifo
    Sfifo(8) [
      11,
      22,
      33,
      44,
      55,
      22,
      33,
      44,
      '#empty': undefined,
      '#ei': 8
    ]
    > var sfifo = creat_sfifo(8,undefined);
    undefined
    > sfifo.unshift(11,22,33,44,55)
    5
    > sfifo
    Sfifo(8) [
      11,
      22,
      33,
      44,
      55,
      undefined,
      undefined,
      undefined,
      '#empty': undefined,
      '#ei': 5
    ]
    > sfifo.unshift(66,77)
    7
    > sfifo
    Sfifo(8) [
      66,
      77,
      11,
      22,
      33,
      44,
      55,
      undefined,
      '#empty': undefined,
      '#ei': 7
    ]
    > sfifo.unshift(88,99,'aa')
    8
    > sfifo
    Sfifo(8) [
      88,
      99,
      'aa',
      66,
      77,
      11,
      22,
      33,
      '#empty': undefined,
      '#ei': 8
    ]
    > sfifo.shift_one()
    88
    > sfifo.shift_one()
    99
    > sfifo
    Sfifo(8) [
      'aa',
      66,
      77,
      11,
      22,
      33,
      undefined,
      undefined,
      '#empty': undefined,
      '#ei': 6
    ]
    > sfifo.shift(3)
    [ 'aa', 66, 77 ]
    > sfifo
    Sfifo(8) [
      11,
      22,
      33,
      undefined,
      undefined,
      undefined,
      undefined,
      undefined,
      '#empty': undefined,
      '#ei': 3
    ]
    >

insert AND add inorder

    //if(size>=16) rb-tree-is-better , if size-is-small, directly cmp AND insert is better

    > var sfifo = creat_sfifo(8,undefined);
    undefined
    > sfifo.add_one_in_order_
    sfifo.add_one_in_order_fwdly                sfifo.add_one_in_order_without_check_fwdly

    > sfifo.add_one_in_order_fwdly(33)
    true
    > sfifo.add_one_in_order_fwdly(22)
    true
    > sfifo
    Sfifo(8) [
      22,
      33,
      undefined,
      undefined,
      undefined,
      undefined,
      undefined,
      undefined,
      '#empty': undefined,
      '#ei': 2
    ]
    > sfifo.add_one_in_order_fwdly(88)
    true
    > sfifo.add_one_in_order_fwdly(77)
    true
    > sfifo.add_one_in_order_fwdly(55)
    true
    > sfifo.add_one_in_order_fwdly(44)
    true
    > sfifo.add_one_in_order_fwdly(66)
    true
    > sfifo.add_one_in_order_fwdly(11)
    true
    > sfifo
    Sfifo(8) [
      11,
      22,
      33,
      44,
      55,
      66,
      77,
      88,
      '#empty': undefined,
      '#ei': 8
    ]
    > sfifo.add_one_in_order_fwdly(99)
    false
    > sfifo
    Sfifo(8) [
      11,
      22,
      33,
      44,
      55,
      66,
      77,
      88,
      '#empty': undefined,
      '#ei': 8
    ]
    >

METHODS

sfifo._slc                                    sfifo.add_one_in_order_fwdly                  sfifo.add_one_in_order_without_check_fwdly    sfifo.capacity_
sfifo.constructor                             sfifo.ei4add_                                 sfifo.empty_                                  sfifo.find_insert_bfr_idx
sfifo.insert_one_aft_idx_fwdly                sfifo.insert_one_bfr_idx_fwdly                sfifo.insert_one_bfr_idx_without_check_fwdly  sfifo.insert_some_aft_idx_fwdly
sfifo.insert_some_bfr_idx_fwdly               sfifo.is_empty                                sfifo.is_full                                 sfifo.lefted_
sfifo.lst_                                    sfifo.lsti_                                   sfifo.pop                                     sfifo.pop_one
sfifo.pop_one_without_check                   sfifo.pop_some                                sfifo.push                                    sfifo.push_one
sfifo.push_one_without_check                  sfifo.push_some                               sfifo.shift                                   sfifo.shift_one
sfifo.shift_one_without_check                 sfifo.shift_some                              sfifo.slc                                     sfifo.sz_
sfifo.to_ary                                  sfifo.unshift                                 sfifo.unshift_one                             sfifo.unshift_one_without_check
sfifo.unshift_some

API

LICENSE

  • ISC