use stringify/parse and replacer/reviver for marshalling for the sake of perfomance, #2511

This commit is contained in:
Johannes Rieken
2016-02-01 15:47:34 +01:00
parent 8cc740b73c
commit 58dfefb502
12 changed files with 51 additions and 153 deletions

View File

@@ -25,7 +25,6 @@ import {IInstantiationService } from 'vs/platform/instantiation/common/instantia
import InstantiationService = require('vs/platform/instantiation/common/instantiationService');
import {PluginHostPluginService} from 'vs/platform/plugins/common/nativePluginService';
import {PluginHostThreadService} from 'vs/platform/thread/common/pluginHostThreadService';
import marshalling = require('vs/base/common/marshalling');
import {ExtHostTelemetryService} from 'vs/workbench/api/node/extHostTelemetry';
import {BaseRequestService} from 'vs/platform/request/common/baseRequestService';
import {BaseWorkspaceContextService} from 'vs/platform/workspace/common/baseWorkspaceContextService';
@@ -59,9 +58,7 @@ export function exit(code?: number) {
}
export function createServices(remoteCom: IPluginsIPC, initData: IInitData, sharedProcessClient: Client): IInstantiationService {
// the init data is not demarshalled
initData = marshalling.deserialize(initData);
let contextService = new BaseWorkspaceContextService(initData.contextService.workspace, initData.contextService.configuration, initData.contextService.options);
let threadService = new PluginHostThreadService(remoteCom);
threadService.setInstantiationService(InstantiationService.create({ threadService: threadService }));

View File

@@ -10,6 +10,7 @@ import { TPromise } from 'vs/base/common/winjs.base';
import { PluginHostMain, createServices, IInitData, exit } from 'vs/workbench/node/pluginHostMain';
import { Client, connect } from 'vs/base/node/service.net';
import { create as createIPC, IPluginsIPC } from 'vs/platform/plugins/common/ipcRemoteCom';
import marshalling = require('vs/base/common/marshalling');
interface IRendererConnection {
remoteCom: IPluginsIPC;
@@ -27,7 +28,10 @@ function connectToRenderer(): TPromise<IRendererConnection> {
const stats: number[] = [];
// Listen init data message
process.once('message', msg => {
process.once('message', raw => {
let msg = marshalling.parse(raw);
const remoteCom = createIPC(data => {
process.send(data);
stats.push(data.length);