  Data structures used in software development have inbuilt redundancy to
improve software reliability and to speed up performance. Examples include a
Doubly Linked List which allows a faster deletion due to the presence of the
previous pointer. With the introduction of Persistent Memory, storing the
redundant data fields into persistent memory adds a significant write overhead,
and reduces performance. In this work, we focus on three data structures -
Doubly Linked List, B+Tree and Hashmap, and showcase alternate partly
persistent implementations where we only store a limited set of data fields to
persistent memory. After a crash/restart, we use the persistent data fields to
recreate the data structures along with the redundant data fields. We compare
our implementation with the base implementation and show that we achieve
speedups around 5-20% for some data structures, and up to 165% for a
flush-dominated data structure.
