Jump to content

Recommended Posts

Posted (edited)

Hello there!

 

Let's go straight in the topic!

I want to implement an lru cache for educational purposes.

The main LRU cache class will implement an interface which contains the following methods :

Note : V and K are generic references

 

  • V lookUp(K key) : returns the value V with K as its key 
  • void store(V value, K key) : obviously stores the data in the cache 
  • double getHitRatio() 
  • long getNumberOfLookups() 
  • long getNumberOfhits() 
  • long getNumberOfMisses()

 

Sooooo right now i have an alpha implementation implemented as following :

I use a hashmap which i implement (NOTE : i wanna implement each data structure im gonna use by myself)

to store the values, and a queue where i insert the keys.

Each time an item is inserted, i check the size of the queue.

If queue.size() > cacheSize, i pop() all the expired keys and remove their values from the map

 

So after testing it with Strings and 50k entries input i get the freaking huge time of 17seconds!!!!!!! and a hit ratio of 9%(!)

If i remove the removal of the expired keys the time drops to 1 sec and the hit ratio goes to 98%,but the application isnt an lru cahce implementation.....

 

Another implementation suggested by a friend was to use splay trees, cause the least recently used nodes would be near the root.

I also thought to try and implement B Trees , but i aint so fond of it

 

So , what do you guys suggest?

Which data structures should i use for this "project"?

If i need to use a hashmap , is linear probing the type of hash that would fit, since there are no memory issues?

 

Thanks in advance for your help guys,

Regards FelonBIG

Edited by FelonBIG
  • 2 months later...
Posted

well since it's outdated you can lock it.

Also i finished an alpha version of this project which i can share for the community if someone's interested.

Guest
This topic is now closed to further replies.


  • Posts

    • NEW SEASON 2025     GRAND OPENING 31.01.2025 Dear players, we would like present you the new season of the L2Exoplanet server. The new server will be rate x10 with alot new updates & fixes. We promise you the best High Five server with big community and balanced economy. Our project consists team of enthusiasts who love Lineage 2 and we would like invite to this iconic game.     GRAND OPENING:  31.01.2025 at 20:00 GMT+1 BETA TEST:   24.01.2025    Client: High Five Rates: x10   Website: https://l2exoplanet.net Facebook: https://www.facebook.com/L2-Exoplanet-106811564103836 Discord: https://discord.gg/4fzhW7ZSPc      
    • NEW SEASON START 31.1.2025       GRAND OPENING:  31.01.2025 at 20:00 GMT+1 BETA TEST:   24.01.2025    Client: High Five Rates: x10   Website: https://l2exoplanet.net Facebook: https://www.facebook.com/L2-Exoplanet-106811564103836 Discord: https://discord.gg/4fzhW7ZSPc       Game Rates    Experience: x10  Skill Points: x10  Adena: x8  Drop: x8  Spoil: x8  Quest: x5  Raid Boss Drop: x5  Fame: x2  Epaulette: x8  Manor: x8  MW Craft Chance: 6%  Key-Matherial-Recepie: x16    Safe Enchant: +3  Maximum Enchant: +16  Normal Scroll Chance: 60%  Blessed Scroll Chance: 63%  Attribute Stone Chance: 50%  Attribute Crystal Chance: 30%      Game Settings    Multibox - 3 game clients per HWID  Autoloot  Autolearn Skills  NPC Buffer  Buff Slots (24+4/12)  Buff Duration (2h)  Olympiad Period 7days (new heroes appear every monday)  Seven Signs Period  Class Transfer for Adena  Max Sub-Class 3  Sub-Class Max Level 85  Essence Interface  Champions System  Vote Reward System  Dayli Reward System  PC Points Reward (500PC = 1 Donate Coin)      Epic Bosses Respawn Times     Queen Ant:  24 Hours +/- 4 Hours   Beleth: 2 Days +/- 8 Hours   Baium: 2 Days +/- 8 Hours   Antharas: 3 Days +/- 8 Hours   Valakas:  3 Days +/- 8 Hours     Instance Info     Normal Freya = 6 Players   Hard Freya = 12 Players   Frintezza = 6 Players   Zaken 83 Day = 6 Players   Zaken 60 Day = 6 Players   Zaken Nightly = 6 Players   Tiat = 6 Players   Beleth = 12 Players
    • i think u need edit server files side too... bcs for interlude missing cmd for this set
    • Hi. I'm trying to rewrite the Lineage 2 interlude interface so that the screen displays information that, for example, the “Curse Gloom” debuff has entered and that it displays what skill has been resisted (there is only general information). Is it possible to do this?
    • OPENING ON MARCH 21 AT 18:00 GMT+1 Airin Server — a journey from the classic Chronicle 1 to the epic Chronicle 5, followed by a world merge with the Teon server. We are creating a unique gaming experience where each era unfolds gradually. From your first steps to battles with epic bosses, from the importance of every equipment grade to the significance of every location. Progressive Chronicles — your journey through history. Limits: 1 client per person Rates: Epic drop chance: x1 Quest drop chance: x1 Raid drop chance: x2 Adena (dynamic): x3~ (x1 for high-level) EXP\SP: x2-x3 Drop chance: x2-x3 Spoil chance: x2-x3 Quests A-grade: x1-x3 Quests S-grade: x1-x2 Welcome to Elmorelab.com!
  • Topics

×
×
  • Create New...