<commit_before>---
layout: post
title: 优化草稿
---


### 背景
用于大数据分析，追求速度，将所有数据都放于内存处理。分为：业务模块层，框架层，表现层。

### 流程
- 1用户点击运行。
- 2框架层从文件中读入数据，进行预处理，放入内存，传递给业务层。
- 3业务层从内存中获取数据，进行二次处理，生成结果。

循环2与3，直至处理完全部文件。
随手画下流程图，家里电脑没有合适的工具，将就着画吧。

![](http://www.decbug.com/wp-content/uploads/2014/05/%E6%97%A0%E6%A0%87%E9%A2%98-270x300.png)

### 现状
如前文所示，业务模块是串行处理，CPU利用率25%，偶尔在会到80% 以上，利用不够充分。由于windows32位单个进程只能用4G内存，其中内核2G，用户只能使用2G。目前已出现内存不足的情况（new申请内存失败），当数据继续膨胀，2G内存必然远不够用。业务模块的代码不够规范，内存泄漏比较多，影响到整体运行。

### 想点办法
由单进程改为多进程
- 1并发以压榨CPU，根本闲不下来。
- 2每个业务件都是一个进程，都可用2G内存，可以容纳更大的数据，并且不会互相干扰。
- 3增加一个数据层，将框架层与业务层隔离。

![](http://www.decbug.com/wp-content/uploads/2014/05/%E6%97%A0%E6%A0%87%E9%A2%98.2png-300x251.png)<commit_msg>modified the position of image<commit_after>---
layout: post
title: 优化草稿
---


### 背景
用于大数据分析，追求速度，将所有数据都放于内存处理。分为：业务模块层，框架层，表现层。

### 流程

- 1用户点击运行。
- 2框架层从文件中读入数据，进行预处理，放入内存，传递给业务层。
- 3业务层从内存中获取数据，进行二次处理，生成结果。

循环2与3，直至处理完全部文件。
随手画下流程图，家里电脑没有合适的工具，将就着画吧。

![](http://www.decbug.com/wp-content/uploads/2014/05/%E6%97%A0%E6%A0%87%E9%A2%98-270x300.png)

### 现状
如前文所示，业务模块是串行处理，CPU利用率25%，偶尔在会到80% 以上，利用不够充分。由于windows32位单个进程只能用4G内存，其中内核2G，用户只能使用2G。目前已出现内存不足的情况（new申请内存失败），当数据继续膨胀，2G内存必然远不够用。业务模块的代码不够规范，内存泄漏比较多，影响到整体运行。

### 想点办法
由单进程改为多进程

- 并发以压榨CPU，根本闲不下来。
- 每个业务件都是一个进程，都可用2G内存，可以容纳更大的数据，并且不会互相干扰。
- 增加一个数据层，将框架层与业务层隔离。

![](http://www.decbug.com/wp-content/uploads/2014/05/%E6%97%A0%E6%A0%87%E9%A2%98.2png-300x251.png)
{'fraction_non_alphanumeric': 0.18258426966292135, 'fraction_numerical': 0.09339887640449439, 'mean_word_length': 7.742331288343558, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 4, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '941277', 'n_tokens_mistral': 1188, 'n_tokens_neox': 1285, 'n_words': 49}