Skip to content

竞品分析 由 Mohuuu 贡献

sunsonliu edited this page Dec 17, 2024 · 1 revision

作者: Mohuuu 史林

对比时间:2024-09-06

来源:https://github.com/Tencent/cherry-markdown/pull/896

1. 简介

Cherry Markdown 是一款开源的轻量级 Markdown 编辑器,致力于提供一个功能丰富、易用且可定制的Markdown编辑体验。它适用于需要在web应用中集成Markdown编辑功能的开发者, 由腾讯开发。本报告将从多个维度对 Cherry Markdown 与主要竞品进行对比分析。

2. 主要竞品

  • Obsidian
  • Notion
  • Joplin
  • Typora
  • StackEdit

3. 对比分析

3.1 语法能力

功能 Cherry Markdown Obsidian Notion Joplin Typora StackEdit
基础 Markdown
GFM 表格
数学公式
流程图
自定义语法

Cherry Markdown 在语法能力上与主流竞品基本持平,并支持自定义语法扩展,这是其独特优势。

3.2 功能特性

功能 Cherry Markdown Obsidian Notion Joplin Typora StackEdit
实时预览
文件管理
协作编辑
版本控制
移动端支持

Cherry Markdown 作为纯编辑器,在功能上相对简单。缺少文件管理、协作等高级功能可能限制其在某些场景下的应用。

3.3 安全性

功能 Cherry Markdown Obsidian Notion Joplin Typora StackEdit
本地存储
端到端加密
XSS 防护

Cherry Markdown 内置了安全 Hook,通过白名单过滤和 DOMPurify 扫描过滤提高了内容安全性。但缺乏端到端加密可能在某些高安全性要求场景下处于劣势。

3.4 性能

详细描述运行环境并优化测试文本。以下是测试方案:

运行环境描述

为确保测试结果的一致性和可重复性,我们使用以下标准化环境:

  • 硬件环境

    • CPU: Intel Core i7-12700H
    • RAM: 32GB DDR4 3200MHz
    • 存储: 1TB NVMe SSD
  • 软件环境

    • 操作系统: Windows 11
    • 浏览器: Google Chrome
    • Node.js
  • 网络环境

    • 本地运行,无网络延迟
  • 测试工具

    • Chrome DevTools Performance面板

优化后的测试文本

为了使测试具有鲁棒性,测试文本包含基本所有Markdown元素和丰富的文本量:

综合Markdown性能测试文档

1. 文本格式

这是一个粗体文本示例。这是一个斜体文本示例。这是一个粗斜体文本示例。 这是一个删除线示例。这是一个行内代码示例。

2. 标题层级

2.1 三级标题

2.1.1 四级标题

2.1.1.1 五级标题
2.1.1.1.1 六级标题

3. 列表

3.1 无序列表

  • 项目 1
    • 子项目 1.1
    • 子项目 1.2
  • 项目 2
  • 项目 3

3.2 有序列表

  1. 第一步
  2. 第二步
    1. 子步骤 2.1
    2. 子步骤 2.2
  3. 第三步

3.3 任务列表

  • 已完成任务
  • 未完成任务
  • 待办事项

4. 引用

这是一级引用

这是二级引用

这是三级引用

5. 代码块

def fibonacci(n):
    if n <= 1:
        return n
    else:
        return fibonacci(n-1) + fibonacci(n-2)

print(fibonacci(10))

6. 表格

列1 列2 列3
A1 B1 C1
A2 B2 C2
A3 B3 C3

7. 链接和图片

OpenAI官网

示例图片

8. 数学公式

行内公式:$E = mc^2$

块级公式:

$$ \frac{n!}{k!(n-k)!} = \binom{n}{k} $$

9. 水平线


10. 脚注

这是一个脚注示例^1

11. 大段落文本

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

(重复上述段落10次以增加文本量)

测试步骤

  1. 在每个编辑器中创建新文档。
  2. 启动性能监控工具。
  3. 粘贴测试文本到编辑器中。
  4. 记录DCL和FCP时间。
  5. 进行编辑操作(如添加/删除文本、更改格式等)并记录响应时间。
  6. 对大文档(如重复测试文本10次)进行相同操作,测试性能表现。
  7. 每个编辑器重复测试3次,取平均值后取整。

性能指标

老师说主要考虑以下两个指标: 1、把md解析成html的时间(Engine.makeHtml); 2、把html渲染到页面的时间(Previewer.update);

由于我是在各个软件上进行性能测试,有些还是高度集成,对外接口较少,没有找到以上指标。故只能曲线救国,从硬件层面入手测试,再测试类似DCL和FCP这两个指标,但在浏览器和桌面应用中有一些区别:

  1. 浏览器环境:
  • DCL: 表示HTML文档被完全加载和解析完成的时间点,不包括样式表、图片和子框架的加载。
  • FCP: 表示浏览器首次渲染DOM中的任何文本、图像、非空白canvas或SVG的时间点。
  1. 桌面应用(如Typora):
  • DCL: 可以理解为应用程序的主要UI组件被加载和初始化的时间点。
  • FCP: 可以理解为应用程序首次向用户显示有意义内容的时间点。

我们还可以考虑以下指标:

  1. 内存使用: 测试过程中的峰值内存使用。
  2. CPU使用率: 测试过程中的平均和峰值CPU使用率。
  3. 滚动性能: 在长文档中快速滚动时的帧率。
  4. 大文件加载时间: 加载一个包含大量Markdown文本的文件所需时间。
  5. 实时预览延迟: 输入文本到预览更新的时间延迟。

这个测试方案将提供更全面和可靠的性能数据,有助于更准确地评估和比较不同Markdown编辑器的性能,本次实验使用前两个指标。

性能测试结果

根据数据,我们可以创建一个Markdown表格来展示各个编辑器的性能指标,并进行详细分析。

编辑器 DCL时间(ms) FCP时间(ms) 内存使用(MB) CPU使用率(%)
Cherry Markdown 217 274 31 18
Typora 195 286 75 16
StackEdit 230 308 35 19
Joplin 245 344 68 38
Notion 337 418 91 5
Obsidian 357 456 92 30

详细分析

由于还不太会使用图床,于是尝试使用Markdown来绘制简单的文本柱状图如下:

DCL时间 (ms)

Cherry Markdown |████████████████████████ 217
Typora          |███████████████████████ 195
StackEdit       |████████████████████████ 230
Joplin          |█████████████████████████ 245
Notion          |████████████████████████████████ 337
Obsidian        |██████████████████████████████████ 357

Typora和Cherry Markdown在DCL时间上表现出色,说明它们在初始加载和解析HTML结构方面效率较高。

FCP时间 (ms)

Cherry Markdown |████████████████████████ 274
Typora          |█████████████████████████ 286
StackEdit       |██████████████████████████ 308
Joplin          |███████████████████████████████ 344
Notion          |████████████████████████████████████████ 418
Obsidian        |████████████████████████████████████████████ 456

Cherry Markdown和Typora在FCP时间上表现优异,意味着它们能够更快地呈现首个有意义的内容。

内存使用 (MB)

Cherry Markdown |███ 31
Typora          |███████ 75
StackEdit       |███ 35
Joplin          |██████ 68
Notion          |█████████ 91
Obsidian        |█████████ 92

Cherry Markdown和StackEdit在内存使用方面表现出色,这对于处理大型文档或在资源受限的环境中使用非常有利。

CPU使用率 (%)

Cherry Markdown |████████ 18
Typora          |███████ 16
StackEdit       |████████ 19
Joplin          |████████████████ 38
Notion          |██ 5
Obsidian        |████████████ 30

Notion在CPU使用率方面表现出色,但这可能是以牺牲其他性能指标为代价的。Typora和Cherry Markdown在保持较低CPU使用率的同时,还能保持其他指标的优秀表现。

综合评估

  1. Cherry Markdown: 在所有指标上表现均衡且出色,特别是在内存使用和FCP时间方面领先。

  2. Typora: DCL时间最快,其他指标也表现良好,是一个全面且高效的选择。

  3. StackEdit: 内存使用低,其他指标中等,适合资源受限的环境。

  4. Joplin: 各项指标表现中等,但CPU使用率偏高。

  5. Notion: CPU使用率最低,但其他指标表现较差,可能采用了特殊的性能优化策略。

  6. Obsidian: 在这次测试中表现不佳,各项指标都较差,可能需要进一步优化。

总的来说,Cherry Markdown和Typora在处理复杂Markdown文档时表现最为出色,它们在速度、资源使用和整体效率方面都达到了很好的平衡。选择编辑器时,除了考虑这些性能指标外,还应考虑功能特性、用户界面友好度和个人使用习惯等因素。

3.5 扩展能力

功能 Cherry Markdown Obsidian Notion Joplin Typora StackEdit
插件系统
自定义主题
API 支持

Cherry Markdown 提供了插件系统和 API 支持,扩展能力较强,这使得它可以根据不同需求进行定制化开发。

4. 二次开发难易度对比

要量化这几个Markdown编辑器的二次开发难易程度,从社区反馈和个人体验上,我们可以从以下几个方面进行评估和打分:

评估维度

  1. 开源程度: 是否开源,源码是否完全可用。(满分10分)

  2. 技术栈复杂度: 使用的编程语言和框架的普及度和学习曲线。(满分10分)

  3. 模块化程度: 代码结构是否清晰,模块划分是否合理。(满分10分)

  4. 文档完善度: 开发文档、API文档等是否齐全。(满分10分)

  5. 社区活跃度: GitHub stars、issues、PRs等。(满分10分)

  6. 扩展机制: 是否提供插件系统或其他扩展方式。(满分10分)

评分标准

  • 9-10分: 非常容易
  • 7-8分: 较容易
  • 5-6分: 中等
  • 3-4分: 较难
  • 1-2分: 非常难

评分结果

编辑器 开源程度 技术栈复杂度 模块化程度 文档完善度 社区活跃度 扩展机制 总分
Cherry Markdown 10 8 8 7 6 9 48
Obsidian 5 7 7 9 10 10 48
Notion 2 5 6 8 9 7 37
Joplin 10 7 7 8 8 9 49
Typora 3 6 5 6 7 5 32
StackEdit 10 8 7 7 7 8 47

分析

  1. Cherry Markdown: 完全开源,使用JavaScript开发,模块化程度高,有插件系统,二次开发较为容易。

  2. Obsidian: 核心不开源但提供完善的插件API,社区非常活跃,文档齐全,扩展性强。

  3. Notion: 闭源,API有限,二次开发难度较大。

  4. Joplin: 完全开源,使用Electron和React,插件系统完善,二次开发友好。

  5. Typora: 部分开源,使用Web技术栈,但扩展性较差,二次开发相对困难。

  6. StackEdit: 开源,基于Vue.js,结构清晰,有插件系统,适合二次开发。

总的来说,Joplin、Cherry Markdown和StackEdit因其开源特性和良好的扩展机制,最适合进行二次开发。Obsidian虽然核心不开源,但其插件系统非常强大,也很适合进行功能扩展。Notion和Typora的二次开发难度相对较大。

5. 结论

Cherry Markdown 作为一款轻量级开源 Markdown 编辑器,在多个方面展现出了显著的优势和潜力:

  1. 性能卓越:在复杂文档处理时,Cherry Markdown 展现出优秀的性能表现。它在 FCP 时间、内存使用和 CPU 使用率等关键指标上均表现出色,仅在 DCL 时间上略逊于 Typora。这意味着 Cherry Markdown 能够提供快速、流畅的编辑体验,尤其适合处理大型或复杂的 Markdown 文档。
  2. 扩展性强:Cherry Markdown 提供了完善的插件系统和 API 支持,允许开发者进行深度定制和功能扩展。这种灵活性使其能够适应各种特定需求和应用场景。
  3. 二次开发友好:在二次开发难易度评估中,Cherry Markdown 获得了较高的总分(48分),与 Obsidian 并列第二,仅次于 Joplin。其完全开源的特性、清晰的模块化结构和较低的技术栈复杂度,为开发者提供了良好的二次开发环境。
  4. 安全性考虑:Cherry Markdown 内置了安全 Hook 和 XSS 防护机制,显示出对内容安全性的重视。虽然缺乏端到端加密,但在大多数应用场景中,其安全措施应该足够。
  5. 语法能力全面:Cherry Markdown 支持基础 Markdown、GFM 表格、数学公式、流程图等常见功能,并且独特地支持自定义语法,这为特定领域的应用提供了更大的灵活性。
  6. 轻量级设计:作为一个专注于编辑功能的工具,Cherry Markdown 在保持轻量的同时,提供了强大的编辑能力。这使得它特别适合需要在 web 应用中集成 Markdown 编辑功能的开发者。

然而,Cherry Markdown 也存在一些局限性:

  1. 功能范围:相比全功能的笔记应用(如 Notion 或 Obsidian),Cherry Markdown 缺少文件管理、协作编辑、版本控制等高级功能。这可能限制其在某些复杂工作流程中的应用。
  2. 社区活跃度:虽然 Cherry Markdown 的社区活跃度得分不低,但相比 Obsidian 等竞品还有提升空间。活跃的社区可以带来更多的插件、主题和持续的改进。

综上所述,Cherry Markdown 是一个性能出色、扩展性强、适合二次开发的 Markdown 编辑器。它特别适合那些需要在 web 应用中集成高性能 Markdown 编辑功能,或需要深度定制 Markdown 编辑器的开发者。对于个人用户或小型团队来说,它也是一个轻量级但功能强大的选择。然而,对于需要全面文档管理和协作功能的大型团队或企业用户,可能还需要考虑其他更全面的解决方案。

终于肝完了,请老师同学批评指正!

Clone this wiki locally