Open main menu

CDOT Wiki β

Changes

WhySoSerial?

279 bytes added, 05:33, 25 February 2017
Assignment 1
WordProcessor
 == - The Application== 
This application was built for assignment one. It is a sort of string editor/ translator was made. It accepts files to be processed by taking words from the file itself and using "codex" or dictionary, to match them to specific meanings or words. Then it replaces the string for that line and moves on to the next. Its intended purpose is to take large files and translate them into other languages. I believe this can be a highly parallelizable problem as many of the steps seem that they can be done in synchronous.
WordProcessor - the application that performs a tokenization of the input string, mapping of the codex, and replacing of string to file.
 == -Issues== 
The main concern with this program is that often times it spends much of its time is looking something up and comparing it to each token generated by a split. This can be quite time consuming as it then has to go through a list of translations to find a matching pair. To increase speeds further, I had implemented the codex as a map.
 == -Run-time Analysis Big-O== 
split()
replace()
n : The complexity of ''string::Replace '' is linear according to [http://http://www.cplusplus.com/reference/string/string/replace/ CPlusPlus Reference] Replace and Split were added to this analysis because they may be improved in the future in order to add features to the application itself. This will more than likely increase their complexity and therefore its runtimes. In addition, these functions will be kept on watch as they are called from ''lookup()''.
Replace and Split were added to this analysis because they may be improved in the future in order to add features to the application itself. This will more than likely increase their complexity and therefore its runtimes. In addition, these functions will be kept on watch as they are called from lookup().
== -Profile Results==
gprof - More profiles can be found at https://github.com/Pooch11/DPS915/tree/master/TestFiles/Profiles
 
Each sample counts as 0.01 seconds.
time seconds seconds calls ns/call ns/call name
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
60.00 0.06 0.06 '''WordProcessor::lookup'''(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
30.00 0.09 0.03 472125 63.54 71.53 [''Split''] void std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_emplace_back_aux<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&&&)
0.00 0.10 0.00 112230 0.00 0.00 '''WordProcessor::replace'''(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)
Highlighting one of the profileprofiles; a significant amount of time can be observed in one particular method - ''lookup()''. It belongs to the class WordProcessorand consumes most of the lifetime of the application. It is provided each line of the file, and sends off additional calls to help parse, tokenize and replace strings within the given line.
Looking at the overall test data, this is a very prominent trend. ''Lookup ()'' is always the most resource intensive method. This confirms assumptions made for Big-O regarding this funtion
-Profile Overview
[[File:https://github.com/Pooch11/DPS915/blob/master/TestFiles/Profiles/Profilesataglance.jpg]]
-Additional Info Available @
- [https://github.com/Pooch11/DPS915] GitHub Link]
=== File Compression ===
76
edits