问题标签 [code-size]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
614 浏览

c - 通过分解空指针显着减少编译代码大小

我最近一直在用 C 语言为一个只有 2kB 闪存的微控制器开发一些嵌入式软件。在编程结束时,我一直在达到代码限制。到现在为止,当这种情况发生时,我一直在提高编译器优化的水平,重新测试,然后愉快地继续。但是,我最近达到了优化的极限,并且添加了最后一点功能,再次耗尽了内存。结果,我不得不让 George Foreman 了解我的源代码并消耗一些脂肪。

我在这里和那里减少了一些抽象层,这有点帮助但还不够。接下来我看到的是我有函数原型

它将要处理的事件和可用于将附加数据传递给调用的空指针作为其参数。如果我不需要任何额外的数据,我通过NULL. 这个函数是在开发的早期写的,我意识到我从来没有使用过data,所以我把它分解了。这一更改为我节省了所需的编译代码大小(~100 字节),我想知道为什么,特别是考虑到我通常NULLprocess_event被调用时通过?

0 投票
1 回答
1513 浏览

c - 开源或免费软件 C 代码度量工具?

我一直在尝试找到一种工具(希望适用于 MAC OS X,但我不介意迁移)——适用于这些尺寸,但我没有运气。Maultech提到了一些,这个页面也是如此,但我无法让它们工作。Meter 和 ccount(在该页面上列出)似乎涵盖了我想要的大部分内容。这些工具似乎也不再是最新的了,这让我不确定输出是否仍然可以信任。

当前是否有任何免费或开源的 C 工具可以做到这一点?我发现的大部分内容都是针对 Java 或 OO 的。

我所说的简单指标是指例如计算数量、字符、空格、函数、方法、语句数量、嵌套深度等。

大小是指代码行和注释。

我所说的复杂性至少是指 mccabe 和 halstead 度量。

耦合和凝聚力是指函数调用等之间的交互(这是已知的 SE 原则)。

0 投票
3 回答
3257 浏览

performance - 是否有方法/函数可以获取使用 GCC 编译器编译的 C 程序的代码大小?(应用某些优化技术时可能会有所不同)

  • 我可以在fseek()函数的帮助下测量代码大小并将其存储到 shell 变量中吗?
  • 是否可以使用milepost gccor提取代码大小、编译时间和执行时间GNU Profiler tool?如果是,如何将它们存储到 shell 变量中?

由于我的目标是根据编译时间、执行时间和代码大小找到最佳的优化技术集,因此我期待一些可以返回这些参数的函数。

这会将执行时间存储到变量Val中。同样,我想获取代码大小和编译时间的值。我会更喜欢我可以做的事情来完成这个,而不使用外部程序!

0 投票
2 回答
1329 浏览

gcc - 将 wxDev-C++ 与 GCC 或 MSVC 编译器一起使用时,可执行文件太大

我正在使用 wxDev-C++ IDE(在 windows 7 中)创建一个简单的(hello world!)C++ 应用程序,它有一个非常简单的 GUI(只有一个没有元素的框架)。
问题是输出 .exe 文件的大小太大(当我使用 MSVC10 编译器编译时大约为 2MB,当我使用 GCC 编译时超过 8MB,这些大小是最好的情况!)。
我检查了许多可能性(例如排除调试信息或优化大小),但没有一个对减小可执行文件大小没有帮助。
我强烈猜测存在链接问题,因为我见过一个演示应用程序,其中包含几乎所有小部件,代码大小只有大约 1MB。
任何想法?

0 投票
1 回答
448 浏览

c++ - 如何在 Visual Studio 2010 中重用已与另一个 C++ 应用程序链接到 DLL 的静态库代码?

我正在开发 Visual Studio 2010 中的 C++ 解决方案。我有一个使用一些标准 C++ 库函数(例如字符串或文件函数)的 DLL 文件。由于某些可移植性原因,我必须使用/MT选项编译此 DLL,因此所有必需的运行时库函数都将链接到已发布的 DLL 文件。

我有另一个 C++ 项目,它是一个 Windows 应用程序,该项目还使用/MT选项编译并生成一个独立的 exe 文件。第二个项目还使用了已链接在我的 DLL 中的相同标准 C++ 库函数(可执行文件还使用一些 DLL 导出方法)。

现在这是我的问题:有什么方法可以告诉链接器不要链接已经链接到 DLL 文件的公共运行时函数,并且不要在 exe 文件中再次链接这些共享部分(例如,对已经链接的字符串函数重用相同的代码链接到我的 DLL)?

0 投票
1 回答
1079 浏览

android - Android::PackageStats.codeSize 表示什么?

我是韩国软件开发人员,英语说得不太好。

我请求你的理解。

反正...

我从 packagestats 获得了代码大小(长)。

相关链接:

http://developer.android.com/reference/android/content/pm/PackageStats.html

获取已安装的应用程序大小

然而,

我不知道 codeSize 代表什么。

有人说codeSize是APK的大小。

我不能确定。

因为不仅有 APK 文件,还有 odex 文件、图像文件等资源文件,

声音文件、ttf 文件等。

一开始,我确实想知道每个完整的包装尺寸

所以我确实得到了 codeSize、dataSize、cacheSize 和外部事物的总和。

我不确定那是完整的包装尺寸。

LZ,给我的建议。

谢谢你。

0 投票
5 回答
1401 浏览

c++ - 演示制作者如何获得超小文件大小?

当我在 youtube 上观看 demoscene 视频时,作者经常吹嘘他们的文件大小是 64kb 或更小,有些只有 4kb。当我用 C++ 编译一个非常基本的程序时,可执行文件总是至少 90kb 左右。这些演示完全是用汇编编写的吗?据我了解,demomakers 也使用了 c/c++。

0 投票
1 回答
145 浏览

atmega - 确定文件的代码大小

我有程序并将其编译为 Hex 文件,该文件可在此处获得。我将此十六进制文件烧录到 ATMega 卡 163 中,它运行正常。现在我想知道文件的代码大小。

运行size main.hex给出:

为什么文本大小和 bss 为 0?数据大小的含义是什么?

0 投票
1 回答
133 浏览

c++ - 静态库;未使用的符号;标题中的定义

我正在为嵌入式系统创建一个 HAL,其中一部分是重新创建printf功能(通过一个名为 的类Printer)。因为它是一个嵌入式系统,所以代码空间很重要,我想在默认情况下排除浮点支持printf,但允许我的 HAL 的用户在逐个项目的基础上包含它,而无需重新编译我的库.

我所有的类都在头文件中内联了它们的方法定义。

printer.h看起来像......

现在,我的理解是这应该很好用。

printer.cpp很好很简单:

不必要的代码膨胀: 如果我在没有定义的情况下编译我的库和项目ENABLE_PRINT_FLOAT,那么代码大小为 9,216 kB。

必要的代码膨胀: 如果我用 编译库和项目ENABLE_PRINT_FLOAT,代码大小为 9,348 kB。

必要的代码 blo.... 哦,等等,它并不臃肿:如果我用 编译项目而没有 编译库ENABLE_PRINT_FLOAT,我希望看到与上面相同的内容。但是不...相反,我的代码大小为 7,092 kB,并且程序无法正确执行。

最小大小: 如果我编译都没有编译ENABLE_PRINT_FLOAT,那么代码大小只有 6,960 kB。

如何实现代码小、类灵活和易于使用的目标?

构建系统是 CMake。完整的项目源代码在这里

主文件很好很简单:

0 投票
0 回答
292 浏览

performance - Errai 框架代码大小和性能(Errai-Tutorial)

我正在考虑将 Errai 用于一个新项目。我喜欢它使用的所有抽象级别以及可以编写的简洁和声明性代码。

我主要关心的是实现这个框架需要支付的税款,与 js 代码大小和性能有关。

一些具体的问题是:

  1. 对于使用 RPC 或 RF 的 GWT 中的等效应用程序,人们体验到的性能和 js 代码大小有何不同。
  2. 我实现了 Errai.Tutorial 3.1.1 并运行了“clean package wildfly:deploy”。这让我得到了 18 个排列,每个排列大约1.01 MB。这似乎已经被缩小和混淆了。这是预期的尺寸吗?

1MB 的 Javascript 对于只有几个类和有限功能的简单应用来说似乎很多。

我确实在文中看到以下内容,这让我认为代码不必要地臃肿:

但是,当我对“ exraJvmArgs ”标签中的 POM 进行更改时,出现以下错误:

谢谢,史蒂夫