top of page

C++ Projects

A brief explanation of some of the C++ projects I've worked on during my professional time at Tally Solutions and during the coursework at the University of Utah.

data-structures

Tally Solutions Private Limited | 2020

Data Structures

I initially researched possible reasons for performance hindrances such as memory allocation, copy construction, cache misses, false sharing, mutex locks, and pipeline flushes due to branch misprediction. Keeping these factors in mind, I implemented design paradigms to balance these costs to increase the efficiency of back-end applications. Further, I implemented node-specific locks using a lock-free mechanism to facilitate concurrent read/write requests and prevent thread starvation by providing proportional lock opportunities.

Implemented data structures include Static and Dynamic Arrays, Static and Dynamic Queues, Static and Dynamic Stacks, Auto-Indexed Array, Bit-Array, List, and Hash Table.

Tally Solutions Private Limited | 2020-21

Datatypes

Implemented cross-platform in-house data types with C++, which are highly efficient and consistent, and handle edge cases prominently, making the application crash-proof. Platforms supported include Windows, MacOS, Linux, Android, and WearOS.
 

Data types include

  • Fixed-size types:

    • Date, Time, and Math, which are faster than std alternatives.

  • Variable-size types:

    • String: supports String operations, encoding conversion, and interoperability between differently encoded strings.

    • Directory: an extension of String datatype for cross-platform (local and network) path-oriented validation and operations.

  • Compound types:

    • Amount, Quantity, RateOfExchange, DateRange, TimeRange, which are used in accounting and compliance use-cases.

Datatypes
Engine

Game Engine

Implemented a memory manager as part of C++ Game Programming Course to reduce the kernel-level allocation calls and to have a cache-friendly framework by increasing the efficiency of applications that use the memory manager. Used bit-array to track allocations and deallocations within the FixedSizeAllocators of custom sizes to accommodate majority of the allocations, and the other minor allocation requests are handled by a HeapManager that can allocate memory blocks of any size and uses linked-list approach to track the allocated and free lists. Further, implemented Physics system for game objects using Verlet numerical integration. Additionally, I implemented Smart and Weak pointers so as to simplify maintaining multiple references to the same game objects across individual systems in the engine and handle their destruction.

Extended existing 3D engine that uses D3D/OpenGL to improve maintainability of platform-dependent code, introduce modularity in systems design to allow multiple games to be developed using the engine, and implement additional functionalities such as Reference Counting for thread-safety, Camera, and data read from JSON.

University of Utah | 2022

Objects

Object Framework

Tally Solutions Private Limited | 2021-22

Implemented FixedField, VariableField, UniversalID, FieldID, URL, and Object to complete the Object Framework, allowing storage of data,  CRUD operations, and serialization of data for persistence & transmission.

Implemented FixedField framework to support Fixed-types and VariableField framework to support Variable-types as data within Objects. This framework helped avoid conditional branches throughout majority of the Object code, which helped boost performance. This also increased maintainability as the framework automatically supports a new fixed-size/variable-size type within an Object without requiring any additional steps.

Object is a buffer/container in which all types of data can be stored for persistence and transmission. It supports CRUD operations to create new data or edit existing data, serialization, and de-serialization. The framework also supports insertion of Objects within Objects, and edit as well, which inherently adds support for Compound-types that were derived from Object.

Implemented UniversalID to support universal ID across the database to uniquely identify and fetch a 'field,' and FieldID to increase the efficiency of index-based structure utilized by Object by reducing the UniversalID to a local ID.

The Object had two forms for efficiency purposes, one operates data as pointers, while the other in serialized form, which made it efficient and faster than the Google Protocol Buffer.

Implemented URL framework to uniquely fetch, edit, or store Object within a Database or another Object efficiently and easily.

Ladder Framework

Introduced ladder framework for index-based structures to mitigate space complexity, which reduced memory usage by ~60% when the arrays are sparsely populated. Used in the Dynamic array and Object implementations.

Tally Solutions Private Limited | 2022

Tally Solutions Private Limited | 2019

Custom Path Parser

Implemented customized parsing for directory paths using Deterministic Finite Automata (DFA) and Context Free Grammar (CFG). Used Lex and Yacc to specify token and grammar rules.

Tally Solutions Private Limited | 2019

Task Scheduler

Implemented Task Scheduler which can automatically execute tasks at a given time and time intervals by reading them from a persisted file, where the tasks are written in a predefined format.

bottom of page