|
16 | 16 | int main(int argc, char **argv)
|
17 | 17 | {
|
18 | 18 | printf("Sorting tables starting...\n");
|
19 |
| - |
| 19 | + |
20 | 20 | // time the program
|
21 | 21 | struct timeval sysTimeStart, sysTimeEnd;
|
22 | 22 | gettimeofday(&sysTimeStart, NULL);
|
@@ -140,48 +140,46 @@ int main(int argc, char **argv)
|
140 | 140 | }
|
141 | 141 |
|
142 | 142 | // messages
|
143 |
| - // note: this sort is quite a bit different since we cant dump all 1.9 million messages into memory. |
| 143 | + // note: this sort uses the heap |
144 | 144 | {
|
145 | 145 | printf("Sorting %d messages\n", fc->messages);
|
146 | 146 |
|
| 147 | + |
147 | 148 | // time this section
|
148 | 149 | struct timeval startSysTimeSub, endSysTimeSub;
|
149 | 150 | gettimeofday(&startSysTimeSub, NULL);
|
150 | 151 |
|
151 | 152 | // get count
|
152 | 153 | int count = fc->messages;
|
153 |
| - message_sort_t message_sorts[count]; |
| 154 | + message_t *messages = malloc(sizeof(message_t) * count); |
154 | 155 |
|
155 |
| - // read into temp struct/array, rename file |
| 156 | + // read |
156 | 157 | for (i = 0; i < count; i++)
|
157 | 158 | {
|
158 |
| - message_t *msg = read_message(i); |
159 |
| - presort_message(i); |
160 |
| - |
161 |
| - message_sort_t tmp; |
162 |
| - tmp.fileNum = i; |
163 |
| - tmp.timestampId = msg->timestampId; |
164 |
| - |
165 |
| - message_sorts[i] = tmp; |
166 |
| - free_message(msg); |
| 159 | + message_t *tmp = read_message(i); |
| 160 | + messages[i] = *tmp; |
| 161 | + free_message(tmp); |
167 | 162 | }
|
168 | 163 |
|
169 | 164 | // sort
|
170 |
| - qsort(message_sorts, count, sizeof(message_sorts[0]), compare_message_sorts); |
| 165 | + qsort(messages, count, sizeof(messages[0]), compare_messages); |
171 | 166 |
|
172 |
| - // rename back in sorted order |
| 167 | + // write |
173 | 168 | for (i = 0; i < count; i++)
|
174 | 169 | {
|
175 |
| - unpresort_message(message_sorts[i].fileNum, i); |
| 170 | + write_message(i, &messages[i]); |
| 171 | + //print_city(&cities[i]); |
176 | 172 | }
|
177 | 173 |
|
| 174 | + free(messages); |
| 175 | + |
178 | 176 | // end timing this section
|
179 | 177 | gettimeofday(&endSysTimeSub, NULL);
|
180 | 178 | float totalTime = (endSysTimeSub.tv_sec - startSysTimeSub.tv_sec)
|
181 | 179 | + (endSysTimeSub.tv_usec - startSysTimeSub.tv_usec) / 1000000.0f;
|
182 | 180 | printf("Table process time %f seconds\n", totalTime);
|
183 | 181 | }
|
184 |
| - |
| 182 | + |
185 | 183 | // timestamps
|
186 | 184 | {
|
187 | 185 | printf("Sorting %d timestamps\n", fc->timestamps);
|
@@ -256,7 +254,7 @@ int main(int argc, char **argv)
|
256 | 254 | + (endSysTimeSub.tv_usec - startSysTimeSub.tv_usec) / 1000000.0f;
|
257 | 255 | printf("Table process time %f seconds\n", totalTime);
|
258 | 256 | }
|
259 |
| - |
| 257 | + |
260 | 258 | free_file_count(fc);
|
261 | 259 |
|
262 | 260 | // end timing the program
|
|
0 commit comments