Difference between revisions of "SummerOfCodeProposal Ryanc"

From The Battle for Wesnoth Wiki
(New page: =Optimize implementation of WML for memory usage= =Details= '''Name:''' Ryan Chew '''Age:''' 24 '''Email:''' ryan@chewablestudios.com '''Forum ID:''' chewryan '''IRC ID:''' KnightR ...)
 
m (added category SoC)
 
(6 intermediate revisions by one other user not shown)
Line 1: Line 1:
 
=Optimize implementation of WML for memory usage=
 
=Optimize implementation of WML for memory usage=
  
=Details=
+
=About Me=
 
+
*'''Name:''' Ryan Chew
'''Name:''' Ryan Chew
+
*'''Age:''' 24
 
+
*'''Email:''' ryan@chewablestudios.com
'''Age:''' 24
+
*'''Forum ID:''' chewryan
 
+
*'''IRC ID:''' KnightR
'''Email:''' ryan@chewablestudios.com
+
*'''Detailed Application:''' [[SummerOfCodeProposal_ryanc_app| Link Here ]]
 
 
'''Forum ID:''' chewryan
 
 
 
'''IRC ID:''' KnightR
 
 
 
'''Detailed Application:''' [[SummerOfCodeProposal_ryanc_app| Link Here ]]
 
  
 
=Introduction=
 
=Introduction=
 
Greetings and welcome to my humble wiki abode.
 
Greetings and welcome to my humble wiki abode.
 +
 
My name is Ryan and I'm currently enrolled at DigiPen Institute of Technology - Singapore, earning a BSc in Real-Time Interactive Simulations course.
 
My name is Ryan and I'm currently enrolled at DigiPen Institute of Technology - Singapore, earning a BSc in Real-Time Interactive Simulations course.
  
Line 22: Line 17:
  
 
'''''Estimated Timeline'''''
 
'''''Estimated Timeline'''''
 +
 
'''May'''
 
'''May'''
- Get a better feel of how the Wesnoth developers work.
+
* Get a better feel of how the Wesnoth developers work.
- Study WML's technical implementation (learn how documents are parsed).
+
* Study WML's technical implementation (learn how documents are parsed).
- Profile WML's memory usage and identify areas which are taking up large amounts of memory.
+
* Profile WML's memory usage and identify areas which are taking up large amounts of memory.
- Research on various implementations to reduce memory usage.
+
* Research on various implementations to reduce memory usage.
- Run ideas through developers and community for optimal solutions and refine them.
+
* Run ideas through developers and community for optimal solutions and refine them.
  
 
'''June'''
 
'''June'''
- Implement initial solutions and test, test, test.
+
* Implement initial solutions and test, test, test.
- Research other possible areas of improvement.
+
* Research other possible areas of improvement.
  
 
'''July'''
 
'''July'''
- Research stops and working time should all be spent on continued implementation of discussed and agreed-upon solutions (no more new stuff).
+
* Research stops and working time should all be spent on continued implementation of discussed and agreed-upon solutions (no more new stuff).
- Prepare for mid-term evaluation.
+
* Prepare for mid-term evaluation.
  
 
'''August'''
 
'''August'''
- Testing and bug fixing
+
* Testing and bug fixing
- Wrap up for final evaluation.
+
* Wrap up for final evaluation.
  
 
'''''Technical Details'''''
 
'''''Technical Details'''''
 +
 
Currently, one of the major memory hogs is the use of std::map and the large amounts of strings stored by the config class.
 
Currently, one of the major memory hogs is the use of std::map and the large amounts of strings stored by the config class.
 +
 
The idea would be to find an efficient implementation to replace the usage of a map, reduce string duplicates and, if needed, revert to simpler data structures.
 
The idea would be to find an efficient implementation to replace the usage of a map, reduce string duplicates and, if needed, revert to simpler data structures.
 
Here are several ideas for implementation:
 
Here are several ideas for implementation:
- Use a simple hash (with caching and fast reverse-hashing features) as the key instead of std::string.
+
* Use a simple hash (with caching and fast reverse-hashing features) as the key instead of std::string.
- Store values in their integral forms instead of std::string.
+
* Store values in their integral forms instead of std::string.
- Find a viable replacement for std::map, like an ordered vector which indexes into values.
+
* Find a viable replacement for std::map, like an ordered vector which indexes into values.
  
 
Time would also have to be allocated to study WML's technical implementation and possibly detail it in a technical document as I understand the documentation is lacking at the moment.
 
Time would also have to be allocated to study WML's technical implementation and possibly detail it in a technical document as I understand the documentation is lacking at the moment.
Line 58: Line 56:
 
Wesnoth is a fun little game that I can see myself dedicating time and energy to developing even after GSoC is concluded.
 
Wesnoth is a fun little game that I can see myself dedicating time and energy to developing even after GSoC is concluded.
 
Plus, I wouldn't pass up on the chance to continue learning from the Wesnoth developers and expand my programming knowledge :)
 
Plus, I wouldn't pass up on the chance to continue learning from the Wesnoth developers and expand my programming knowledge :)
 +
 +
 +
[[Category:Summer of Code]]

Latest revision as of 22:00, 3 April 2009

Optimize implementation of WML for memory usage

About Me

  • Name: Ryan Chew
  • Age: 24
  • Email: ryan@chewablestudios.com
  • Forum ID: chewryan
  • IRC ID: KnightR
  • Detailed Application: Link Here

Introduction

Greetings and welcome to my humble wiki abode.

My name is Ryan and I'm currently enrolled at DigiPen Institute of Technology - Singapore, earning a BSc in Real-Time Interactive Simulations course.

Project

Estimated Timeline

May

  • Get a better feel of how the Wesnoth developers work.
  • Study WML's technical implementation (learn how documents are parsed).
  • Profile WML's memory usage and identify areas which are taking up large amounts of memory.
  • Research on various implementations to reduce memory usage.
  • Run ideas through developers and community for optimal solutions and refine them.

June

  • Implement initial solutions and test, test, test.
  • Research other possible areas of improvement.

July

  • Research stops and working time should all be spent on continued implementation of discussed and agreed-upon solutions (no more new stuff).
  • Prepare for mid-term evaluation.

August

  • Testing and bug fixing
  • Wrap up for final evaluation.

Technical Details

Currently, one of the major memory hogs is the use of std::map and the large amounts of strings stored by the config class.

The idea would be to find an efficient implementation to replace the usage of a map, reduce string duplicates and, if needed, revert to simpler data structures. Here are several ideas for implementation:

  • Use a simple hash (with caching and fast reverse-hashing features) as the key instead of std::string.
  • Store values in their integral forms instead of std::string.
  • Find a viable replacement for std::map, like an ordered vector which indexes into values.

Time would also have to be allocated to study WML's technical implementation and possibly detail it in a technical document as I understand the documentation is lacking at the moment. There will probably be other areas for improvement as well, like lazy-loading, but those will have to wait until I fully understand the inner-workings of WML.

Expectations

Working on an OSS project for the first time, I expect to gain valuable industry skills/knowledge and to learn from the experienced developers currently on the Wesnoth project. This experience will also provide me a chance to work in a highly diversified team and learn to manage working with developers in different locations and timezones.

Wesnoth is a fun little game that I can see myself dedicating time and energy to developing even after GSoC is concluded. Plus, I wouldn't pass up on the chance to continue learning from the Wesnoth developers and expand my programming knowledge :)

This page was last edited on 3 April 2009, at 22:00.