大佬们,强类型语言,定义结构多了会有什么问题? - V2EX
uiosun

大佬们,强类型语言,定义结构多了会有什么问题?

  •  
  •   uiosun Nov 28, 2022 1307 views
    This topic created in 1281 days ago, the information mentioned may be changed or developed.

    目前写 Go/C#,喜欢定义各种结构,看到 StackOverflow 上有人说“你当然可以将 Request / Response 都定义出来,但定义太多结构,会占用部分内存”。

    我是从弱类型语言转过来的( PHP/Python/Javascript 都写过),转的核心原因就是强类型方便的定义结构和类型。

    特别喜欢把类型结构定义好结构标准,类型固定,运算省心,IDE 能提示,心里会很舒服,算是代码洁癖之一。

    所以现在自己的项目有 30+ 个接口,每个接口都有声明好的请求、响应结构,再加上自己的习惯,就变成了:

    • 请求、响应结构;
    • 抽象对象结构;
    • 在多个抽象结构中存在的、为了复用而抽出来的结构;
    • ORM 模型结构。

    按照自己的需求规划,目前的结构数量翻个倍没问题,所以有点心慌,想问一下大佬们,这会占用很多内存吗?有啥办法衡量没有?

    如果结构真的很多、且真的会占用内存,怎么办,拆成微服务 + gRPC ?

    nightwitch
        1
    nightwitch  
       Nov 28, 2022 via Android
    30+个接口就在操心这事了。。3000 个再说吧
    uiosun
        2
    uiosun  
    OP
       Nov 28, 2022
    @nightwitch 那我就放心了,主要是有点摸不着底,毕竟没考虑过这玩意怎么加载、卸载的
    CEBBCAT
        3
    CEBBCAT  
       Nov 28, 2022 via iPhone   1
    第一点是要深深地记住,计算机界有很多人不是很懂回答问题。我当时初学 C 的时候搜怎么定义动态数组,百度知道一个回答说要 malloc 申请内存,很危险,建议别这么做,我居然信了,干,真是误人子弟

    第二点是可以学学 Linux 的 loader 、Go 的汇编生成(含逃逸分析)方面的东西,你就会知道到底什么在占内存。你想想你引用到的底层库又得有多少类型声明,九牛一毛而已

    最后……不要过早优化,在那之前学习好的编程风格就可以了
    uiosun
        4
    uiosun  
    OP
       Nov 28, 2022
    @CEBBCAT 感谢大佬,指了条明路哇!我研究研究
    Kilerd
        5
    Kilerd  
       Nov 28, 2022 via iPhone
    首先 python 是强类型语言
    uiosun
        6
    uiosun  
    OP
       Nov 28, 2022
    @Kilerd 喔!不好意思,可能是我写的都是些脚本,导致觉得它是弱类型。浅薄了浅薄了
    About     Help     Advertise     Blog     API     FAQ     Solana     2996 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 15:09 PVG 23:09 LAX 08:09 JFK 11:09
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86